Advertisement
Guest User

Untitled

a guest
Mar 10th, 2012
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 70.20 KB | None | 0 0
  1. Program: /usr/local/bin/warzone2100(warzone2100)
  2. Command line: "warzone2100"
  3. Version: Version SDL-3.1_beta4 - Built Feb 28 2012
  4. Distributor: UNKNOWN
  5. Compiled on: Feb 28 2012 19:10:56
  6. Compiled by: GCC 4.5.2
  7. Compiled mode: Release build
  8. Executed on: Sat Mar 10 22:01:15 2012
  9. Operating system: Linux
  10. Node name: R26695g
  11. Release: 2.6.38-13-generic
  12. Version: #56-Ubuntu SMP Tue Feb 14 12:39:59 UTC 2012
  13. Machine: x86_64
  14.  
  15. Pointers: 64bit
  16.  
  17. Compiled against PhysicsFS version: 2.0.1
  18. Running with PhysicsFS version: 2.0.1
  19.  
  20. Misc Data:
  21. [22:01:15]Video Mode 1500 x 800 (window)
  22. [22:01:15]OpenGL Vendor: ATI Technologies Inc.
  23. [22:01:15]OpenGL Renderer: AMD Radeon HD 6900 Series
  24. [22:01:15]OpenGL Version: 4.1.10665 Compatibility Profile Context
  25. [22:01:15]GLEW Version: 1.5.2
  26. [22:01:15]OpenGL GLSL Version : 4.10
  27. [22:01:15]OpenAL Device Name: PulseAudio Software
  28. [22:01:15]OpenAL Vendor: OpenAL Community
  29. [22:01:15]OpenAL Version: 1.1 ALSOFT 1.12.854
  30. [22:01:15]OpenAL Renderer: OpenAL Soft
  31. [22:01:15]OpenAL Extensions: AL_EXTX_buffer_sub_data AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXTX_sample_buffer_object AL_EXT_source_distance_model AL_LOKI_quadriphonic
  32. [22:01:15]Using Backend: SDL
  33. [22:01:15]Using language: System locale
  34. [22:09:10]Current Level/map is Sk-ColosseumWZ-T1
  35. [22:12:45]Current Level/map is Sk-ColosseumWZ-T1
  36. [22:15:17]Current Level/map is Sk-ColosseumWZ-T1
  37.  
  38. Dump caused by signal: SIGSEGV: Invalid memory reference: Address not mapped to object
  39.  
  40. Log message: info |10:01:21: [loadMapPreview] Could not find level dataset!
  41. Log message: info |10:01:21: [loadMapPreview] Assert in Warzone: multiint.cpp:420 (psLevel != NULL), last script event: '<none>'
  42. Log message: error |10:09:12: [recvMultiPlayerRandomArtifacts] Already something at (50,24)!
  43. Log message: info |10:09:25: [recvMessage] ** player 4 has dropped!
  44. Log message: info |10:09:41: [NETrecvNet] Player, (player 0) seems to have dropped/disconnected.
  45. Log message: info |10:10:23: [NETplayerKicked] Player 6 was kicked.
  46. Log message: last message repeated 2 times
  47. Log message: last message repeated 1 times (total 3 repeats)
  48. Log message: info |10:12:56: [recvMessage] ** player 7 has dropped!
  49. Log message: info |10:13:21: [recvMessage] ** player 6 has dropped!
  50. Log message: info |10:13:25: [NETrecvNet] Player, (player 0) seems to have dropped/disconnected.
  51. Log message: info |10:14:05: [NETplayerKicked] Player 6 was kicked.
  52.  
  53. GLIBC raw backtrace:
  54. warzone2100[0x749857]
  55. /lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60)[0x7f40a8854c60]
  56. warzone2100(_Z14buildBlueprintPK15STRUCTURE_STATS8Vector2itj13STRUCT_STATES+0xc5)[0x692c26]
  57. warzone2100(_ZNK9Blueprint14buildBlueprintEv+0x3f)[0x51c4d7]
  58. warzone2100(_Z25getTileBlueprintStructureii+0x5f)[0x51134a]
  59. warzone2100[0x523f8c]
  60. warzone2100(_Z22processMouseClickInputv+0xb36)[0x520a12]
  61. warzone2100[0x5b0550]
  62. warzone2100(_Z8gameLoopv+0x29a)[0x5b1124]
  63. warzone2100[0x5b31be]
  64. warzone2100(_Z8mainLoopv+0x75)[0x5b3491]
  65. warzone2100(_Z7wzMain3v+0x78)[0x767417]
  66. warzone2100(_Z8realmainiPPc+0x8fb)[0x5b3db0]
  67. warzone2100(main+0x20)[0x7653ec]
  68. /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff)[0x7f40a672ceff]
  69. warzone2100[0x4d4209]
  70.  
  71. GDB extended backtrace:
  72. GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
  73. Copyright (C) 2010 Free Software Foundation, Inc.
  74. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  75. This is free software: you are free to change and redistribute it.
  76. There is NO WARRANTY, to the extent permitted by law. Type "show copying"
  77. and "show warranty" for details.
  78. This GDB was configured as "x86_64-linux-gnu".
  79. For bug reporting instructions, please see:
  80. <http://www.gnu.org/software/gdb/bugs/>...
  81. Reading symbols from /usr/local/bin/warzone2100...done.
  82. Attaching to program: /usr/local/bin/warzone2100, process 5220
  83. Reading symbols from /lib/x86_64-linux-gnu/libz.so.1...(no debugging symbols found)...done.
  84. Loaded symbols for /lib/x86_64-linux-gnu/libz.so.1
  85. Reading symbols from /usr/lib/libSDL-1.2.so.0...(no debugging symbols found)...done.
  86. Loaded symbols for /usr/lib/libSDL-1.2.so.0
  87. Reading symbols from /usr/lib/libphysfs.so.1...(no debugging symbols found)...done.
  88. Loaded symbols for /usr/lib/libphysfs.so.1
  89. Reading symbols from /lib/x86_64-linux-gnu/libpng12.so.0...(no debugging symbols found)...done.
  90. Loaded symbols for /lib/x86_64-linux-gnu/libpng12.so.0
  91. Reading symbols from /usr/lib/libvorbisfile.so.3...(no debugging symbols found)...done.
  92. Loaded symbols for /usr/lib/libvorbisfile.so.3
  93. Reading symbols from /usr/lib/libvorbis.so.0...(no debugging symbols found)...done.
  94. Loaded symbols for /usr/lib/libvorbis.so.0
  95. Reading symbols from /usr/lib/libogg.so.0...(no debugging symbols found)...done.
  96. Loaded symbols for /usr/lib/libogg.so.0
  97. Reading symbols from /lib/x86_64-linux-gnu/libm.so.6...(no debugging symbols found)...done.
  98. Loaded symbols for /lib/x86_64-linux-gnu/libm.so.6
  99. Reading symbols from /usr/lib/libtheora.so.0...(no debugging symbols found)...done.
  100. Loaded symbols for /usr/lib/libtheora.so.0
  101. Reading symbols from /usr/lib/libopenal.so.1...(no debugging symbols found)...done.
  102. Loaded symbols for /usr/lib/libopenal.so.1
  103. Reading symbols from /usr/lib/libfribidi.so.0...(no debugging symbols found)...done.
  104. Loaded symbols for /usr/lib/libfribidi.so.0
  105. Reading symbols from /usr/lib/x86_64-linux-gnu/libfreetype.so.6...(no debugging symbols found)...done.
  106. Loaded symbols for /usr/lib/x86_64-linux-gnu/libfreetype.so.6
  107. Reading symbols from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1...(no debugging symbols found)...done.
  108. Loaded symbols for /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
  109. Reading symbols from /lib/x86_64-linux-gnu/libpthread.so.0...(no debugging symbols found)...done.
  110. [Thread debugging using libthread_db enabled]
  111. [New Thread 0x7f409264f700 (LWP 5871)]
  112. [New Thread 0x7f4093360700 (LWP 5834)]
  113. [New Thread 0x7f4093ffe700 (LWP 5232)]
  114. [New Thread 0x7f409ce01700 (LWP 5231)]
  115. [New Thread 0x7f409de04700 (LWP 5230)]
  116. [New Thread 0x7f409e605700 (LWP 5229)]
  117. [New Thread 0x7f40a1816700 (LWP 5228)]
  118. [New Thread 0x7f40a2427700 (LWP 5227)]
  119. Loaded symbols for /lib/x86_64-linux-gnu/libpthread.so.0
  120. Reading symbols from /usr/lib/fglrx/libGL.so.1...(no debugging symbols found)...done.
  121. Loaded symbols for /usr/lib/fglrx/libGL.so.1
  122. Reading symbols from /usr/lib/libGLU.so.1...(no debugging symbols found)...done.
  123. Loaded symbols for /usr/lib/libGLU.so.1
  124. Reading symbols from /usr/lib/libGLEW.so.1.5...(no debugging symbols found)...done.
  125. Loaded symbols for /usr/lib/libGLEW.so.1.5
  126. Reading symbols from /usr/lib/libQtNetwork.so.4...(no debugging symbols found)...done.
  127. Loaded symbols for /usr/lib/libQtNetwork.so.4
  128. Reading symbols from /usr/lib/libQtScript.so.4...(no debugging symbols found)...done.
  129. Loaded symbols for /usr/lib/libQtScript.so.4
  130. Reading symbols from /usr/lib/libQtCore.so.4...(no debugging symbols found)...done.
  131. Loaded symbols for /usr/lib/libQtCore.so.4
  132. Reading symbols from /usr/lib/x86_64-linux-gnu/libX11.so.6...(no debugging symbols found)...done.
  133. Loaded symbols for /usr/lib/x86_64-linux-gnu/libX11.so.6
  134. Reading symbols from /usr/lib/x86_64-linux-gnu/libXrandr.so.2...(no debugging symbols found)...done.
  135. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXrandr.so.2
  136. Reading symbols from /usr/lib/x86_64-linux-gnu/libstdc++.so.6...(no debugging symbols found)...done.
  137. Loaded symbols for /usr/lib/x86_64-linux-gnu/libstdc++.so.6
  138. Reading symbols from /lib/x86_64-linux-gnu/libgcc_s.so.1...(no debugging symbols found)...done.
  139. Loaded symbols for /lib/x86_64-linux-gnu/libgcc_s.so.1
  140. Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...(no debugging symbols found)...done.
  141. Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6
  142. Reading symbols from /lib/x86_64-linux-gnu/libdl.so.2...(no debugging symbols found)...done.
  143. Loaded symbols for /lib/x86_64-linux-gnu/libdl.so.2
  144. Reading symbols from /usr/lib/libpulse-simple.so.0...(no debugging symbols found)...done.
  145. Loaded symbols for /usr/lib/libpulse-simple.so.0
  146. Reading symbols from /usr/lib/libpulse.so.0...(no debugging symbols found)...done.
  147. Loaded symbols for /usr/lib/libpulse.so.0
  148. Reading symbols from /lib/x86_64-linux-gnu/librt.so.1...(no debugging symbols found)...done.
  149. Loaded symbols for /lib/x86_64-linux-gnu/librt.so.1
  150. Reading symbols from /lib/x86_64-linux-gnu/libexpat.so.1...(no debugging symbols found)...done.
  151. Loaded symbols for /lib/x86_64-linux-gnu/libexpat.so.1
  152. Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
  153. Loaded symbols for /lib64/ld-linux-x86-64.so.2
  154. Reading symbols from /usr/lib/x86_64-linux-gnu/libXext.so.6...(no debugging symbols found)...done.
  155. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXext.so.6
  156. Reading symbols from /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0...(no debugging symbols found)...done.
  157. Loaded symbols for /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0
  158. Reading symbols from /lib/x86_64-linux-gnu/libglib-2.0.so.0...(no debugging symbols found)...done.
  159. Loaded symbols for /lib/x86_64-linux-gnu/libglib-2.0.so.0
  160. Reading symbols from /usr/lib/x86_64-linux-gnu/libxcb.so.1...(no debugging symbols found)...done.
  161. Loaded symbols for /usr/lib/x86_64-linux-gnu/libxcb.so.1
  162. Reading symbols from /usr/lib/x86_64-linux-gnu/libXrender.so.1...(no debugging symbols found)...done.
  163. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXrender.so.1
  164. Reading symbols from /usr/lib/libpulsecommon-0.9.22.so...(no debugging symbols found)...done.
  165. Loaded symbols for /usr/lib/libpulsecommon-0.9.22.so
  166. Reading symbols from /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1...(no debugging symbols found)...done.
  167. Loaded symbols for /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
  168. Reading symbols from /usr/lib/x86_64-linux-gnu/libICE.so.6...(no debugging symbols found)...done.
  169. Loaded symbols for /usr/lib/x86_64-linux-gnu/libICE.so.6
  170. Reading symbols from /usr/lib/x86_64-linux-gnu/libSM.so.6...(no debugging symbols found)...done.
  171. Loaded symbols for /usr/lib/x86_64-linux-gnu/libSM.so.6
  172. Reading symbols from /usr/lib/libXtst.so.6...(no debugging symbols found)...done.
  173. Loaded symbols for /usr/lib/libXtst.so.6
  174. Reading symbols from /usr/lib/libxcb-atom.so.1...(no debugging symbols found)...done.
  175. Loaded symbols for /usr/lib/libxcb-atom.so.1
  176. Reading symbols from /lib/x86_64-linux-gnu/libdbus-1.so.3...(no debugging symbols found)...done.
  177. Loaded symbols for /lib/x86_64-linux-gnu/libdbus-1.so.3
  178. Reading symbols from /lib/x86_64-linux-gnu/libpcre.so.3...(no debugging symbols found)...done.
  179. Loaded symbols for /lib/x86_64-linux-gnu/libpcre.so.3
  180. Reading symbols from /usr/lib/x86_64-linux-gnu/libXau.so.6...(no debugging symbols found)...done.
  181. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXau.so.6
  182. Reading symbols from /usr/lib/x86_64-linux-gnu/libXdmcp.so.6...(no debugging symbols found)...done.
  183. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
  184. Reading symbols from /lib/libwrap.so.0...(no debugging symbols found)...done.
  185. Loaded symbols for /lib/libwrap.so.0
  186. Reading symbols from /usr/lib/libsndfile.so.1...(no debugging symbols found)...done.
  187. Loaded symbols for /usr/lib/libsndfile.so.1
  188. Reading symbols from /lib/x86_64-linux-gnu/libuuid.so.1...(no debugging symbols found)...done.
  189. Loaded symbols for /lib/x86_64-linux-gnu/libuuid.so.1
  190. Reading symbols from /lib/x86_64-linux-gnu/libnsl.so.1...(no debugging symbols found)...done.
  191. Loaded symbols for /lib/x86_64-linux-gnu/libnsl.so.1
  192. Reading symbols from /usr/lib/libFLAC.so.8...(no debugging symbols found)...done.
  193. Loaded symbols for /usr/lib/libFLAC.so.8
  194. Reading symbols from /usr/lib/libvorbisenc.so.2...(no debugging symbols found)...done.
  195. Loaded symbols for /usr/lib/libvorbisenc.so.2
  196. Reading symbols from /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so...(no debugging symbols found)...done.
  197. Loaded symbols for /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so
  198. Reading symbols from /usr/lib/x86_64-linux-gnu/libXcursor.so.1...(no debugging symbols found)...done.
  199. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXcursor.so.1
  200. Reading symbols from /usr/lib/x86_64-linux-gnu/libXfixes.so.3...(no debugging symbols found)...done.
  201. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXfixes.so.3
  202. Reading symbols from /usr/lib/fglrx/dri/fglrx_dri.so...(no debugging symbols found)...done.
  203. Loaded symbols for /usr/lib/fglrx/dri/fglrx_dri.so
  204. Reading symbols from /usr/lib/fglrx/libatiuki.so.1...(no debugging symbols found)...done.
  205. Loaded symbols for /usr/lib/fglrx/libatiuki.so.1
  206. Reading symbols from /usr/lib/fglrx/libatiadlxx.so...(no debugging symbols found)...done.
  207. Loaded symbols for /usr/lib/fglrx/libatiadlxx.so
  208. Reading symbols from /usr/lib/x86_64-linux-gnu/libXinerama.so.1...(no debugging symbols found)...done.
  209. Loaded symbols for /usr/lib/x86_64-linux-gnu/libXinerama.so.1
  210. Reading symbols from /lib/x86_64-linux-gnu/libnss_files.so.2...(no debugging symbols found)...done.
  211. Loaded symbols for /lib/x86_64-linux-gnu/libnss_files.so.2
  212. Reading symbols from /lib/libnss_mdns4_minimal.so.2...(no debugging symbols found)...done.
  213. Loaded symbols for /lib/libnss_mdns4_minimal.so.2
  214. Reading symbols from /lib/x86_64-linux-gnu/libnss_dns.so.2...(no debugging symbols found)...done.
  215. Loaded symbols for /lib/x86_64-linux-gnu/libnss_dns.so.2
  216. Reading symbols from /lib/x86_64-linux-gnu/libresolv.so.2...(no debugging symbols found)...done.
  217. Loaded symbols for /lib/x86_64-linux-gnu/libresolv.so.2
  218. 0x00007f40a885481d in waitpid () from /lib/x86_64-linux-gnu/libpthread.so.0
  219. (gdb) 0x692c26 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+197>: mov (%rax),%rax
  220. (gdb) #4 0x0000000000692c26 in buildBlueprint (psStats=0x7f409b25d0c8, xy=..., direction=34203, moduleIndex=0, state=SS_BLUEPRINT_PLANNED) at structure.cpp:1770
  221. 1770 ASSERT_OR_RETURN(NULL, psStats->pIMD[0] != NULL, "No blueprint model for %s", getStatName(psStats));
  222. (gdb) Dump of assembler code for function buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES):
  223. 1766 {
  224. 0x0000000000692b61 <+0>: push %rbp
  225. 0x0000000000692b62 <+1>: mov %rsp,%rbp
  226. 0x0000000000692b65 <+4>: push %r12
  227. 0x0000000000692b67 <+6>: push %rbx
  228. 0x0000000000692b68 <+7>: sub $0xb0,%rsp
  229. 0x0000000000692b6f <+14>: mov %rdi,-0x98(%rbp)
  230. 0x0000000000692b76 <+21>: mov %rsi,-0xa0(%rbp)
  231. 0x0000000000692b7d <+28>: mov %edx,%eax
  232. 0x0000000000692b7f <+30>: mov %ecx,-0xa8(%rbp)
  233. 0x0000000000692b85 <+36>: mov %r8d,-0xac(%rbp)
  234. 0x0000000000692b8c <+43>: mov %ax,-0xa4(%rbp)
  235.  
  236. 1767 STRUCTURE *blueprint;
  237. 1768
  238. 1769 ASSERT_OR_RETURN(NULL, psStats != NULL, "No blueprint stats");
  239. 0x0000000000692b93 <+50>: cmpq $0x0,-0x98(%rbp)
  240. 0x0000000000692b9b <+58>: setne %al
  241. 0x0000000000692b9e <+61>: mov %al,-0x11(%rbp)
  242. 0x0000000000692ba1 <+64>: movzbl -0x11(%rbp),%eax
  243. 0x0000000000692ba5 <+68>: xor $0x1,%eax
  244. 0x0000000000692ba8 <+71>: test %al,%al
  245. 0x0000000000692baa <+73>: je 0x692c0e <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+173>
  246. 0x0000000000692bac <+75>: mov $0x7ae896,%edx
  247. 0x0000000000692bb1 <+80>: mov $0x7b0c01,%esi
  248. 0x0000000000692bb6 <+85>: mov $0x19,%edi
  249. 0x0000000000692bbb <+90>: mov $0x0,%eax
  250. 0x0000000000692bc0 <+95>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  251. 0x0000000000692bc5 <+100>: mov $0x1581000,%r9d
  252. 0x0000000000692bcb <+106>: mov $0x7ae8a9,%r8d
  253. 0x0000000000692bd1 <+112>: mov $0x7ae8b9,%ecx
  254. 0x0000000000692bd6 <+117>: mov $0x7ade90,%edx
  255. 0x0000000000692bdb <+122>: mov $0x7b0c01,%esi
  256. 0x0000000000692be0 <+127>: mov $0x19,%edi
  257. 0x0000000000692be5 <+132>: mov $0x0,%eax
  258. 0x0000000000692bea <+137>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  259. 0x0000000000692bef <+142>: movzbl 0xeee4aa(%rip),%eax # 0x15810a0 <assertEnabled>
  260. 0x0000000000692bf6 <+149>: test %al,%al
  261. 0x0000000000692bf8 <+151>: je 0x692c04 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+163>
  262. 0x0000000000692bfa <+153>: mov $0x5,%edi
  263. 0x0000000000692bff <+158>: callq 0x4d2980 <raise@plt>
  264. 0x0000000000692c04 <+163>: mov $0x0,%eax
  265. 0x0000000000692c09 <+168>: jmpq 0x69313a <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1497>
  266.  
  267. 1770 ASSERT_OR_RETURN(NULL, psStats->pIMD[0] != NULL, "No blueprint model for %s", getStatName(psStats));
  268. 0x0000000000692c0e <+173>: mov -0x98(%rbp),%rax
  269. 0x0000000000692c15 <+180>: add $0x38,%rax
  270. 0x0000000000692c19 <+184>: mov $0x0,%esi
  271. 0x0000000000692c1e <+189>: mov %rax,%rdi
  272. 0x0000000000692c21 <+192>: callq 0x6a2dbe <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::operator[](std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size_type) const>
  273. => 0x0000000000692c26 <+197>: mov (%rax),%rax
  274. 0x0000000000692c29 <+200>: test %rax,%rax
  275. 0x0000000000692c2c <+203>: setne %al
  276. 0x0000000000692c2f <+206>: mov %al,-0x12(%rbp)
  277. 0x0000000000692c32 <+209>: movzbl -0x12(%rbp),%eax
  278. 0x0000000000692c36 <+213>: xor $0x1,%eax
  279. 0x0000000000692c39 <+216>: test %al,%al
  280. 0x0000000000692c3b <+218>: je 0x692cb1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+336>
  281. 0x0000000000692c3d <+220>: mov -0x98(%rbp),%rax
  282. 0x0000000000692c44 <+227>: mov %rax,%rdi
  283. 0x0000000000692c47 <+230>: callq 0x682f82 <getStatName(void const*)>
  284. 0x0000000000692c4c <+235>: mov %rax,%rcx
  285. 0x0000000000692c4f <+238>: mov $0x7ae8cc,%edx
  286. 0x0000000000692c54 <+243>: mov $0x7b0c01,%esi
  287. 0x0000000000692c59 <+248>: mov $0x19,%edi
  288. 0x0000000000692c5e <+253>: mov $0x0,%eax
  289. 0x0000000000692c63 <+258>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  290. 0x0000000000692c68 <+263>: mov $0x1581000,%r9d
  291. 0x0000000000692c6e <+269>: mov $0x7ae8e6,%r8d
  292. 0x0000000000692c74 <+275>: mov $0x7ae8ff,%ecx
  293. 0x0000000000692c79 <+280>: mov $0x7ade90,%edx
  294. 0x0000000000692c7e <+285>: mov $0x7b0c01,%esi
  295. 0x0000000000692c83 <+290>: mov $0x19,%edi
  296. 0x0000000000692c88 <+295>: mov $0x0,%eax
  297. 0x0000000000692c8d <+300>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  298. 0x0000000000692c92 <+305>: movzbl 0xeee407(%rip),%eax # 0x15810a0 <assertEnabled>
  299. 0x0000000000692c99 <+312>: test %al,%al
  300. 0x0000000000692c9b <+314>: je 0x692ca7 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+326>
  301. 0x0000000000692c9d <+316>: mov $0x5,%edi
  302. 0x0000000000692ca2 <+321>: callq 0x4d2980 <raise@plt>
  303. 0x0000000000692ca7 <+326>: mov $0x0,%eax
  304. 0x0000000000692cac <+331>: jmpq 0x69313a <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1497>
  305.  
  306. 1771
  307. 1772 Vector3i pos(xy, INT32_MIN);
  308. 0x0000000000692cb1 <+336>: lea -0xa0(%rbp),%rcx
  309. 0x0000000000692cb8 <+343>: lea -0x80(%rbp),%rax
  310. 0x0000000000692cbc <+347>: mov $0x80000000,%edx
  311. 0x0000000000692cc1 <+352>: mov %rcx,%rsi
  312. 0x0000000000692cc4 <+355>: mov %rax,%rdi
  313. 0x0000000000692cc7 <+358>: callq 0x4f71e8 <Vector3i::Vector3i(Vector2i const&, int)>
  314.  
  315. 1773 Rotation rot((direction + 0x2000)&0xC000, 0, 0); // Round direction to nearest 90°.
  316. 0x0000000000692ccc <+363>: movzwl -0xa4(%rbp),%eax
  317. 0x0000000000692cd3 <+370>: add $0x2000,%eax
  318. 0x0000000000692cd8 <+375>: mov %eax,%esi
  319. 0x0000000000692cda <+377>: and $0xc000,%esi
  320. 0x0000000000692ce0 <+383>: lea -0x40(%rbp),%rax
  321. 0x0000000000692ce4 <+387>: mov $0x0,%ecx
  322. 0x0000000000692ce9 <+392>: mov $0x0,%edx
  323. 0x0000000000692cee <+397>: mov %rax,%rdi
  324. 0x0000000000692cf1 <+400>: callq 0x4ec3ce <Rotation::Rotation(int, int, int)>
  325.  
  326. 1774
  327. 1775 StructureBounds b = getStructureBounds(psStats, xy, direction);
  328. 0x0000000000692cf6 <+405>: movzwl -0xa4(%rbp),%edx
  329. 0x0000000000692cfd <+412>: mov -0xa0(%rbp),%rcx
  330. 0x0000000000692d04 <+419>: mov -0x98(%rbp),%rax
  331. 0x0000000000692d0b <+426>: mov %rcx,%rsi
  332. 0x0000000000692d0e <+429>: mov %rax,%rdi
  333. 0x0000000000692d11 <+432>: callq 0x6a1968 <getStructureBounds(STRUCTURE_STATS const*, Vector2i, uint16_t)>
  334. 0x0000000000692d16 <+437>: mov %rax,%rcx
  335. 0x0000000000692d19 <+440>: mov %rdx,%rax
  336. 0x0000000000692d1c <+443>: mov %rcx,-0xc0(%rbp)
  337. 0x0000000000692d23 <+450>: mov %rax,-0xb8(%rbp)
  338. 0x0000000000692d2a <+457>: mov -0xc0(%rbp),%rax
  339. 0x0000000000692d31 <+464>: mov %rax,-0x90(%rbp)
  340. 0x0000000000692d38 <+471>: mov -0xb8(%rbp),%rax
  341. 0x0000000000692d3f <+478>: mov %rax,-0x88(%rbp)
  342.  
  343. 1776 for (int j = 0; j <= b.size.y; ++j)
  344. 0x0000000000692d46 <+485>: movl $0x0,-0x18(%rbp)
  345. 0x0000000000692d4d <+492>: jmp 0x692dac <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+587>
  346. 0x0000000000692da8 <+583>: addl $0x1,-0x18(%rbp)
  347. 0x0000000000692dac <+587>: mov -0x84(%rbp),%eax
  348. 0x0000000000692db2 <+593>: cmp -0x18(%rbp),%eax
  349. 0x0000000000692db5 <+596>: setge %al
  350. 0x0000000000692db8 <+599>: test %al,%al
  351. 0x0000000000692dba <+601>: jne 0x692d4f <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+494>
  352.  
  353. 1777 for (int i = 0; i <= b.size.x; ++i)
  354. 0x0000000000692d4f <+494>: movl $0x0,-0x1c(%rbp)
  355. 0x0000000000692d56 <+501>: jmp 0x692d98 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+567>
  356. 0x0000000000692d94 <+563>: addl $0x1,-0x1c(%rbp)
  357. 0x0000000000692d98 <+567>: mov -0x88(%rbp),%eax
  358. 0x0000000000692d9e <+573>: cmp -0x1c(%rbp),%eax
  359. 0x0000000000692da1 <+576>: setge %al
  360. 0x0000000000692da4 <+579>: test %al,%al
  361. 0x0000000000692da6 <+581>: jne 0x692d58 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+503>
  362.  
  363. 1778 {
  364. 1779 pos.z = std::max(pos.z, map_TileHeight(b.map.x + i, b.map.y + j));
  365. 0x0000000000692d58 <+503>: mov -0x8c(%rbp),%eax
  366. 0x0000000000692d5e <+509>: mov %eax,%edx
  367. 0x0000000000692d60 <+511>: add -0x18(%rbp),%edx
  368. 0x0000000000692d63 <+514>: mov -0x90(%rbp),%eax
  369. 0x0000000000692d69 <+520>: add -0x1c(%rbp),%eax
  370. 0x0000000000692d6c <+523>: mov %edx,%esi
  371. 0x0000000000692d6e <+525>: mov %eax,%edi
  372. 0x0000000000692d70 <+527>: callq 0x68d603 <map_TileHeight(int32_t, int32_t)>
  373. 0x0000000000692d75 <+532>: mov %eax,-0x28(%rbp)
  374. 0x0000000000692d78 <+535>: lea -0x28(%rbp),%rax
  375. 0x0000000000692d7c <+539>: lea -0x80(%rbp),%rdx
  376. 0x0000000000692d80 <+543>: add $0x8,%rdx
  377. 0x0000000000692d84 <+547>: mov %rax,%rsi
  378. 0x0000000000692d87 <+550>: mov %rdx,%rdi
  379. 0x0000000000692d8a <+553>: callq 0x4dd1ae <std::max<int>(int const&, int const&)>
  380. 0x0000000000692d8f <+558>: mov (%rax),%eax
  381. 0x0000000000692d91 <+560>: mov %eax,-0x78(%rbp)
  382.  
  383. 1780 }
  384. 1781
  385. 1782 int moduleNumber = 0;
  386. 0x0000000000692dbc <+603>: movl $0x0,-0x2c(%rbp)
  387.  
  388. 1783 std::vector<iIMDShape *> const *pIMD = &psStats->pIMD;
  389. 0x0000000000692dc3 <+610>: mov -0x98(%rbp),%rax
  390. 0x0000000000692dca <+617>: add $0x38,%rax
  391. 0x0000000000692dce <+621>: mov %rax,-0x48(%rbp)
  392.  
  393. 1784 if (IsStatExpansionModule(psStats))
  394. 0x0000000000692dd2 <+625>: mov -0x98(%rbp),%rax
  395. 0x0000000000692dd9 <+632>: mov %rax,%rdi
  396. 0x0000000000692ddc <+635>: callq 0x68ddc9 <IsStatExpansionModule(STRUCTURE_STATS const*)>
  397. 0x0000000000692de1 <+640>: test %al,%al
  398. 0x0000000000692de3 <+642>: je 0x692ea1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+832>
  399.  
  400. 1785 {
  401. 1786 STRUCTURE *baseStruct = castStructure(worldTile(xy)->psObject);
  402. 0x0000000000692de9 <+648>: lea -0xa0(%rbp),%rax
  403. 0x0000000000692df0 <+655>: mov %rax,%rdi
  404. 0x0000000000692df3 <+658>: callq 0x68d5d9 <worldTile(Vector2i const&)>
  405. 0x0000000000692df8 <+663>: mov 0x20(%rax),%rax
  406. 0x0000000000692dfc <+667>: mov %rax,%rdi
  407. 0x0000000000692dff <+670>: callq 0x68d13f <castStructure(SIMPLE_OBJECT*)>
  408. 0x0000000000692e04 <+675>: mov %rax,-0x50(%rbp)
  409.  
  410. 1787 if (baseStruct != NULL)
  411. 0x0000000000692e08 <+679>: cmpq $0x0,-0x50(%rbp)
  412. 0x0000000000692e0d <+684>: je 0x692ea1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+832>
  413.  
  414. 1788 {
  415. 1789 if (moduleIndex == 0)
  416. 0x0000000000692e13 <+690>: cmpl $0x0,-0xa8(%rbp)
  417. 0x0000000000692e1a <+697>: jne 0x692e33 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+722>
  418.  
  419. 1790 {
  420. 1791 moduleIndex = nextModuleToBuild(baseStruct, 0);
  421. 0x0000000000692e1c <+699>: mov -0x50(%rbp),%rax
  422. 0x0000000000692e20 <+703>: mov $0x0,%esi
  423. 0x0000000000692e25 <+708>: mov %rax,%rdi
  424. 0x0000000000692e28 <+711>: callq 0x52ed8a <nextModuleToBuild(STRUCTURE const*, int)>
  425. 0x0000000000692e2d <+716>: mov %eax,-0xa8(%rbp)
  426.  
  427. 1792 }
  428. 1793 int baseModuleNumber = moduleIndex*2 - 1; // *2-1 because even-numbered IMDs are structures, odd-numbered IMDs are just the modules.
  429. 0x0000000000692e33 <+722>: mov -0xa8(%rbp),%eax
  430. 0x0000000000692e39 <+728>: add %eax,%eax
  431. 0x0000000000692e3b <+730>: sub $0x1,%eax
  432. 0x0000000000692e3e <+733>: mov %eax,-0x20(%rbp)
  433.  
  434. 1794 std::vector<iIMDShape *> const *basepIMD = &baseStruct->pStructureType->pIMD;
  435. 0x0000000000692e41 <+736>: mov -0x50(%rbp),%rax
  436. 0x0000000000692e45 <+740>: mov 0xa8(%rax),%rax
  437. 0x0000000000692e4c <+747>: add $0x38,%rax
  438. 0x0000000000692e50 <+751>: mov %rax,-0x58(%rbp)
  439.  
  440. 1795 if ((unsigned)baseModuleNumber < basepIMD->size())
  441. 0x0000000000692e54 <+755>: mov -0x20(%rbp),%eax
  442. 0x0000000000692e57 <+758>: mov %eax,%ebx
  443. 0x0000000000692e59 <+760>: mov -0x58(%rbp),%rax
  444. 0x0000000000692e5d <+764>: mov %rax,%rdi
  445. 0x0000000000692e60 <+767>: callq 0x572638 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size() const>
  446. 0x0000000000692e65 <+772>: cmp %rax,%rbx
  447. 0x0000000000692e68 <+775>: setb %al
  448. 0x0000000000692e6b <+778>: test %al,%al
  449. 0x0000000000692e6d <+780>: je 0x692ea1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+832>
  450.  
  451. 1796 {
  452. 1797 // Draw the module.
  453. 1798 moduleNumber = baseModuleNumber;
  454. 0x0000000000692e6f <+782>: mov -0x20(%rbp),%eax
  455. 0x0000000000692e72 <+785>: mov %eax,-0x2c(%rbp)
  456.  
  457. 1799 pIMD = basepIMD;
  458. 0x0000000000692e75 <+788>: mov -0x58(%rbp),%rax
  459. 0x0000000000692e79 <+792>: mov %rax,-0x48(%rbp)
  460.  
  461. 1800 pos = baseStruct->pos;
  462. 0x0000000000692e7d <+796>: mov -0x50(%rbp),%rax
  463. 0x0000000000692e81 <+800>: mov 0x10(%rax),%rdx
  464. 0x0000000000692e85 <+804>: mov %rdx,-0x80(%rbp)
  465. 0x0000000000692e89 <+808>: mov 0x18(%rax),%eax
  466. 0x0000000000692e8c <+811>: mov %eax,-0x78(%rbp)
  467.  
  468. 1801 rot = baseStruct->rot;
  469. 0x0000000000692e8f <+814>: mov -0x50(%rbp),%rax
  470. 0x0000000000692e93 <+818>: mov 0x1c(%rax),%edx
  471. 0x0000000000692e96 <+821>: mov %edx,-0x40(%rbp)
  472. 0x0000000000692e99 <+824>: movzwl 0x20(%rax),%eax
  473. 0x0000000000692e9d <+828>: mov %ax,-0x3c(%rbp)
  474.  
  475. 1802 }
  476. 1803 }
  477. 1804 }
  478. 1805
  479. 1806 blueprint = new STRUCTURE(0, selectedPlayer);
  480. 0x0000000000692ea1 <+832>: mov $0x198,%edi
  481. 0x0000000000692ea6 <+837>: callq 0x4d2910 <_Znwm@plt>
  482. 0x0000000000692eab <+842>: mov %rax,%rbx
  483. 0x0000000000692eae <+845>: mov 0xeee834(%rip),%edx # 0x15816e8 <selectedPlayer>
  484. 0x0000000000692eb4 <+851>: mov %rbx,%rax
  485. 0x0000000000692eb7 <+854>: mov $0x0,%esi
  486. 0x0000000000692ebc <+859>: mov %rax,%rdi
  487. 0x0000000000692ebf <+862>: callq 0x6984e8 <STRUCTURE::STRUCTURE(uint32_t, unsigned int)>
  488. 0x0000000000692ec4 <+867>: mov %rbx,-0x60(%rbp)
  489. 0x0000000000693149 <+1512>: mov %rbx,%rdi
  490. 0x000000000069314c <+1515>: callq 0x4d2790 <_ZdlPv@plt>
  491. 0x0000000000693151 <+1520>: mov %r12,%rax
  492. 0x0000000000693154 <+1523>: mov %rax,%rdi
  493. 0x0000000000693157 <+1526>: callq 0x4d3c50 <_Unwind_Resume@plt>
  494.  
  495. 1807 // construct the fake structure
  496. 1808 blueprint->pStructureType = const_cast<STRUCTURE_STATS *>(psStats); // Couldn't be bothered to fix const correctness everywhere.
  497. 0x0000000000692ec8 <+871>: mov -0x60(%rbp),%rax
  498. 0x0000000000692ecc <+875>: mov -0x98(%rbp),%rdx
  499. 0x0000000000692ed3 <+882>: mov %rdx,0xa8(%rax)
  500.  
  501. 1809 blueprint->visible[selectedPlayer] = UBYTE_MAX;
  502. 0x0000000000692eda <+889>: mov 0xeee808(%rip),%eax # 0x15816e8 <selectedPlayer>
  503. 0x0000000000692ee0 <+895>: mov -0x60(%rbp),%rdx
  504. 0x0000000000692ee4 <+899>: mov %eax,%eax
  505. 0x0000000000692ee6 <+901>: movb $0xff,0x4b(%rdx,%rax,1)
  506.  
  507. 1810 blueprint->sDisplay.imd = (*pIMD)[std::min<int>(moduleNumber, pIMD->size() - 1)];
  508. 0x0000000000692eeb <+906>: mov -0x48(%rbp),%rax
  509. 0x0000000000692eef <+910>: mov %rax,%rdi
  510. 0x0000000000692ef2 <+913>: callq 0x572638 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size() const>
  511. 0x0000000000692ef7 <+918>: sub $0x1,%eax
  512. 0x0000000000692efa <+921>: mov %eax,-0x30(%rbp)
  513. 0x0000000000692efd <+924>: lea -0x30(%rbp),%rdx
  514. 0x0000000000692f01 <+928>: lea -0x2c(%rbp),%rax
  515. 0x0000000000692f05 <+932>: mov %rdx,%rsi
  516. 0x0000000000692f08 <+935>: mov %rax,%rdi
  517. 0x0000000000692f0b <+938>: callq 0x4e08c3 <std::min<int>(int const&, int const&)>
  518. 0x0000000000692f10 <+943>: mov (%rax),%eax
  519. 0x0000000000692f12 <+945>: movslq %eax,%rdx
  520. 0x0000000000692f15 <+948>: mov -0x48(%rbp),%rax
  521. 0x0000000000692f19 <+952>: mov %rdx,%rsi
  522. 0x0000000000692f1c <+955>: mov %rax,%rdi
  523. 0x0000000000692f1f <+958>: callq 0x6a2dbe <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::operator[](std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size_type) const>
  524. 0x0000000000692f24 <+963>: mov (%rax),%rdx
  525. 0x0000000000692f27 <+966>: mov -0x60(%rbp),%rax
  526. 0x0000000000692f2b <+970>: mov %rdx,0x30(%rax)
  527.  
  528. 1811 blueprint->pos = pos;
  529. 0x0000000000692f2f <+974>: mov -0x60(%rbp),%rax
  530. 0x0000000000692f33 <+978>: mov -0x80(%rbp),%rdx
  531. 0x0000000000692f37 <+982>: mov %rdx,0x10(%rax)
  532. 0x0000000000692f3b <+986>: mov -0x78(%rbp),%edx
  533. 0x0000000000692f3e <+989>: mov %edx,0x18(%rax)
  534.  
  535. 1812 blueprint->rot = rot;
  536. 0x0000000000692f41 <+992>: mov -0x60(%rbp),%rax
  537. 0x0000000000692f45 <+996>: mov -0x40(%rbp),%edx
  538. 0x0000000000692f48 <+999>: mov %edx,0x1c(%rax)
  539. 0x0000000000692f4b <+1002>: movzwl -0x3c(%rbp),%edx
  540. 0x0000000000692f4f <+1006>: mov %dx,0x20(%rax)
  541.  
  542. 1813 blueprint->selected = false;
  543. 0x0000000000692f53 <+1010>: mov -0x60(%rbp),%rax
  544. 0x0000000000692f57 <+1014>: movb $0x0,0x49(%rax)
  545.  
  546. 1814
  547. 1815 blueprint->numWeaps = 0;
  548. 0x0000000000692f5b <+1018>: mov -0x60(%rbp),%rax
  549. 0x0000000000692f5f <+1022>: movw $0x0,0xd0(%rax)
  550.  
  551. 1816 blueprint->asWeaps[0].nStat = 0;
  552. 0x0000000000692f68 <+1031>: mov -0x60(%rbp),%rax
  553. 0x0000000000692f6c <+1035>: movl $0x0,0xd4(%rax)
  554.  
  555. 1817
  556. 1818 // give defensive structures a weapon
  557. 1819 if (psStats->psWeapStat[0])
  558. 0x0000000000692f76 <+1045>: mov -0x98(%rbp),%rax
  559. 0x0000000000692f7d <+1052>: mov 0x70(%rax),%rax
  560. 0x0000000000692f81 <+1056>: test %rax,%rax
  561. 0x0000000000692f84 <+1059>: je 0x692fc5 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1124>
  562.  
  563. 1820 {
  564. 1821 blueprint->asWeaps[0].nStat = psStats->psWeapStat[0] - asWeaponStats;
  565. 0x0000000000692f86 <+1061>: mov -0x98(%rbp),%rax
  566. 0x0000000000692f8d <+1068>: mov 0x70(%rax),%rax
  567. 0x0000000000692f91 <+1072>: mov %rax,%rdx
  568. 0x0000000000692f94 <+1075>: mov 0xaf1455(%rip),%rax # 0x11843f0 <asWeaponStats>
  569. 0x0000000000692f9b <+1082>: mov %rdx,%rcx
  570. 0x0000000000692f9e <+1085>: sub %rax,%rcx
  571. 0x0000000000692fa1 <+1088>: mov %rcx,%rax
  572. 0x0000000000692fa4 <+1091>: mov %rax,%rdx
  573. 0x0000000000692fa7 <+1094>: sar $0x3,%rdx
  574. 0x0000000000692fab <+1098>: movabs $0x34f72c234f72c235,%rax
  575. 0x0000000000692fb5 <+1108>: imul %rdx,%rax
  576. 0x0000000000692fb9 <+1112>: mov %eax,%edx
  577. 0x0000000000692fbb <+1114>: mov -0x60(%rbp),%rax
  578. 0x0000000000692fbf <+1118>: mov %edx,0xd4(%rax)
  579.  
  580. 1822 }
  581. 1823 // things with sensors or ecm (or repair facilities) need these set, even if they have no official weapon
  582. 1824 blueprint->numWeaps = 0;
  583. 0x0000000000692fc5 <+1124>: mov -0x60(%rbp),%rax
  584. 0x0000000000692fc9 <+1128>: movw $0x0,0xd0(%rax)
  585.  
  586. 1825 blueprint->asWeaps[0].lastFired = 0;
  587. 0x0000000000692fd2 <+1137>: mov -0x60(%rbp),%rax
  588. 0x0000000000692fd6 <+1141>: movl $0x0,0xdc(%rax)
  589.  
  590. 1826 blueprint->asWeaps[0].rot.pitch = 0;
  591. 0x0000000000692fe0 <+1151>: mov -0x60(%rbp),%rax
  592. 0x0000000000692fe4 <+1155>: movw $0x0,0xe6(%rax)
  593.  
  594. 1827 blueprint->asWeaps[0].rot.direction = 0;
  595. 0x0000000000692fed <+1164>: mov -0x60(%rbp),%rax
  596. 0x0000000000692ff1 <+1168>: movw $0x0,0xe4(%rax)
  597.  
  598. 1828 blueprint->asWeaps[0].rot.roll = 0;
  599. 0x0000000000692ffa <+1177>: mov -0x60(%rbp),%rax
  600. 0x0000000000692ffe <+1181>: movw $0x0,0xe8(%rax)
  601.  
  602. 1829 blueprint->asWeaps[0].prevRot = blueprint->asWeaps[0].rot;
  603. 0x0000000000693007 <+1190>: mov -0x60(%rbp),%rax
  604. 0x000000000069300b <+1194>: mov -0x60(%rbp),%rdx
  605. 0x000000000069300f <+1198>: mov 0xe4(%rdx),%ecx
  606. 0x0000000000693015 <+1204>: mov %ecx,0xea(%rax)
  607. 0x000000000069301b <+1210>: movzwl 0xe8(%rdx),%edx
  608. 0x0000000000693022 <+1217>: mov %dx,0xee(%rax)
  609.  
  610. 1830
  611. 1831 blueprint->expectedDamage = 0;
  612. 0x0000000000693029 <+1224>: mov -0x60(%rbp),%rax
  613. 0x000000000069302d <+1228>: movl $0x0,0x170(%rax)
  614.  
  615. 1832
  616. 1833 // Times must be different, but don't otherwise matter.
  617. 1834 blueprint->time = 23;
  618. 0x0000000000693037 <+1238>: mov -0x60(%rbp),%rax
  619. 0x000000000069303b <+1242>: movl $0x17,0x2c(%rax)
  620.  
  621. 1835 blueprint->prevTime = 42;
  622. 0x0000000000693042 <+1249>: mov -0x60(%rbp),%rax
  623. 0x0000000000693046 <+1253>: movl $0x2a,0x174(%rax)
  624.  
  625. 1836
  626. 1837 blueprint->status = state;
  627. 0x0000000000693050 <+1263>: mov -0x60(%rbp),%rax
  628. 0x0000000000693054 <+1267>: mov -0xac(%rbp),%edx
  629. 0x000000000069305a <+1273>: mov %edx,0xb0(%rax)
  630.  
  631. 1838
  632. 1839 // Rotate wall if needed.
  633. 1840 if (blueprint->pStructureType->type == REF_WALL || blueprint->pStructureType->type == REF_GATE)
  634. 0x0000000000693060 <+1279>: mov -0x60(%rbp),%rax
  635. 0x0000000000693064 <+1283>: mov 0xa8(%rax),%rax
  636. 0x000000000069306b <+1290>: mov 0x10(%rax),%eax
  637. 0x000000000069306e <+1293>: cmp $0x7,%eax
  638. 0x0000000000693071 <+1296>: je 0x69308a <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1321>
  639. 0x0000000000693073 <+1298>: mov -0x60(%rbp),%rax
  640. 0x0000000000693077 <+1302>: mov 0xa8(%rax),%rax
  641. 0x000000000069307e <+1309>: mov 0x10(%rax),%eax
  642. 0x0000000000693081 <+1312>: cmp $0x16,%eax
  643. 0x0000000000693084 <+1315>: jne 0x693136 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1493>
  644.  
  645. 1841 {
  646. 1842 WallOrientation scanType = structChooseWallTypeBlueprint(map_coord(removeZ(blueprint->pos)));
  647. 0x000000000069308a <+1321>: mov -0x60(%rbp),%rax
  648. 0x000000000069308e <+1325>: add $0x10,%rax
  649. 0x0000000000693092 <+1329>: mov %rax,%rdi
  650. 0x0000000000693095 <+1332>: callq 0x68cb60 <removeZ(Vector3i const&)>
  651. 0x000000000069309a <+1337>: mov %rax,-0x70(%rbp)
  652. 0x000000000069309e <+1341>: lea -0x70(%rbp),%rax
  653. 0x00000000006930a2 <+1345>: mov %rax,%rdi
  654. 0x00000000006930a5 <+1348>: callq 0x68d2f1 <map_coord(Vector2i const&)>
  655. 0x00000000006930aa <+1353>: mov %rax,%rdi
  656. 0x00000000006930ad <+1356>: callq 0x690c10 <structChooseWallTypeBlueprint(Vector2i)>
  657. 0x00000000006930b2 <+1361>: mov %eax,-0x24(%rbp)
  658.  
  659. 1843 unsigned type = wallType(scanType);
  660. 0x00000000006930b5 <+1364>: mov -0x24(%rbp),%eax
  661. 0x00000000006930b8 <+1367>: mov %eax,%edi
  662. 0x00000000006930ba <+1369>: callq 0x690656 <wallType(WallOrientation)>
  663. 0x00000000006930bf <+1374>: movzwl %ax,%eax
  664. 0x00000000006930c2 <+1377>: mov %eax,-0x34(%rbp)
  665.  
  666. 1844 if (scanType != WallConnectNone)
  667. 0x00000000006930c5 <+1380>: cmpl $0x0,-0x24(%rbp)
  668. 0x00000000006930c9 <+1384>: je 0x693136 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1493>
  669.  
  670. 1845 {
  671. 1846 blueprint->rot.direction = wallDir(scanType);
  672. 0x00000000006930cb <+1386>: mov -0x24(%rbp),%eax
  673. 0x00000000006930ce <+1389>: mov %eax,%edi
  674. 0x00000000006930d0 <+1391>: callq 0x6905cb <wallDir(WallOrientation)>
  675. 0x00000000006930d5 <+1396>: mov -0x60(%rbp),%rdx
  676. 0x00000000006930d9 <+1400>: mov %ax,0x1c(%rdx)
  677.  
  678. 1847 blueprint->sDisplay.imd = blueprint->pStructureType->pIMD[std::min<unsigned>(type, blueprint->pStructureType->pIMD.size() - 1)];
  679. 0x00000000006930dd <+1404>: mov -0x60(%rbp),%rax
  680. 0x00000000006930e1 <+1408>: mov 0xa8(%rax),%rax
  681. 0x00000000006930e8 <+1415>: add $0x38,%rax
  682. 0x00000000006930ec <+1419>: mov %rax,%rdi
  683. 0x00000000006930ef <+1422>: callq 0x572638 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size() const>
  684. 0x00000000006930f4 <+1427>: sub $0x1,%eax
  685. 0x00000000006930f7 <+1430>: mov %eax,-0x38(%rbp)
  686. 0x00000000006930fa <+1433>: lea -0x38(%rbp),%rdx
  687. 0x00000000006930fe <+1437>: lea -0x34(%rbp),%rax
  688. 0x0000000000693102 <+1441>: mov %rdx,%rsi
  689. 0x0000000000693105 <+1444>: mov %rax,%rdi
  690. 0x0000000000693108 <+1447>: callq 0x4e372b <std::min<unsigned int>(unsigned int const&, unsigned int const&)>
  691. 0x000000000069310d <+1452>: mov (%rax),%eax
  692. 0x000000000069310f <+1454>: mov %eax,%eax
  693. 0x0000000000693111 <+1456>: mov -0x60(%rbp),%rdx
  694. 0x0000000000693115 <+1460>: mov 0xa8(%rdx),%rdx
  695. 0x000000000069311c <+1467>: add $0x38,%rdx
  696. 0x0000000000693120 <+1471>: mov %rax,%rsi
  697. 0x0000000000693123 <+1474>: mov %rdx,%rdi
  698. 0x0000000000693126 <+1477>: callq 0x4fa8d0 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::operator[](std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size_type)>
  699. 0x000000000069312b <+1482>: mov (%rax),%rdx
  700. 0x000000000069312e <+1485>: mov -0x60(%rbp),%rax
  701. 0x0000000000693132 <+1489>: mov %rdx,0x30(%rax)
  702.  
  703. 1848 }
  704. 1849 }
  705. 1850
  706. 1851 return blueprint;
  707. 0x0000000000693136 <+1493>: mov -0x60(%rbp),%rax
  708.  
  709. 1852 }
  710. 0x000000000069313a <+1497>: add $0xb0,%rsp
  711. 0x0000000000693141 <+1504>: pop %rbx
  712. 0x0000000000693142 <+1505>: pop %r12
  713. 0x0000000000693144 <+1507>: leaveq
  714. 0x0000000000693145 <+1508>: retq
  715. 0x0000000000693146 <+1509>: mov %rax,%r12
  716.  
  717. End of assembler dump.
  718. (gdb) #0 0x00007f40a885481d in waitpid () from /lib/x86_64-linux-gnu/libpthread.so.0
  719. No symbol table info available.
  720. #1 0x000000000074977e in gdbExtendedBacktrace (dumpFile=22, sigcontext=0x7fffa101d600) at exceptionhandler.cpp:560
  721. frame = 0x7fffa101dc60
  722. gdbPipe = 24
  723. status = 4276480
  724. wpid = -1467661399
  725. gdbCommands = "backtrace full\nframe 4\ndisassemble /m\ninfo registers\nquit\n"
  726. pid = 5872
  727. instruction = 0x692c26 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+197>
  728. #2 0x000000000074999a in posixExceptionHandler (signum=11, siginfo=0x7fffa101d730, sigcontext=0x7fffa101d600) at exceptionhandler.cpp:669
  729. allreadyRunning = 1
  730. dumpFile = 22
  731. signal = 0x7d62f8 "SIGSEGV: Invalid memory reference: Address not mapped to object"
  732. btBuffer = {0x749857, 0x7f40a8854c60, 0x692c26, 0x51c4d7, 0x51134a, 0x523f8c, 0x520a12, 0x5b0550, 0x5b1124, 0x5b31be, 0x5b3491, 0x767417, 0x5b3db0, 0x7653ec, 0x7f40a672ceff, 0x4d4209, 0x0, 0x0, 0x0, 0x0}
  733. gdmpPath = "/tmp/warzone2100.gdmp-XXXXXX"
  734. dumpFilename = "/tmp/warzone2100.gdmp-LQ23vU"
  735. btSize = 16
  736. #3 <signal handler called>
  737. No symbol table info available.
  738. #4 0x0000000000692c26 in buildBlueprint (psStats=0x7f409b25d0c8, xy=..., direction=34203, moduleIndex=0, state=SS_BLUEPRINT_PLANNED) at structure.cpp:1770
  739. _wzeval = false
  740. blueprint = 0x7fffa101dc30
  741. __FUNCTION__ = "buildBlueprint"
  742. rot = {direction = 1, pitch = 0, roll = 0}
  743. pIMD = 0x16
  744. pos = {x = 0, y = 0, z = -1686802320}
  745. b = {map = {x = -1593713552, y = 32767}, size = {x = 11072, y = 0}}
  746. moduleNumber = 32576
  747. #5 0x000000000051c4d7 in Blueprint::buildBlueprint (this=0x7fffa101dc90) at display3d.cpp:288
  748. No locals.
  749. #6 0x000000000051134a in getTileBlueprintStructure (mapX=26, mapY=86) at display3d.cpp:362
  750. psStruct = 0x7f409b757070
  751. blueprint = {stats = 0x7f409b25d0c8, pos = {x = 3776, y = 14272}, dir = 34203, index = 0, state = SS_BLUEPRINT_PLANNED}
  752. #7 0x0000000000523f8c in itemUnderMouse (ppObjectUnderMouse=0x7fffa101dd28) at display.cpp:2719
  753. i = 11
  754. retVal = MT_NOTARGET
  755. psNotDroid = 0x0
  756. psDroid = 0x0
  757. dispY = 9999
  758. dispX = 9999
  759. dispR = 0
  760. psStructure = 0x7fffa101dd10
  761. #8 0x0000000000520a12 in processMouseClickInput () at display.cpp:1047
  762. ObjUnderMouse = 0x0
  763. i = 539
  764. __FUNCTION__ = "processMouseClickInput"
  765. selection = SC_INVALID
  766. item = MT_NOTARGET
  767. OverRadar = false
  768. #9 0x00000000005b0550 in renderLoop () at loop.cpp:320
  769. intRetVal = INT_NONE
  770. __FUNCTION__ = "renderLoop"
  771. quitting = false
  772. clearMode = -1743149568
  773. #10 0x00000000005b1124 in gameLoop () at loop.cpp:690
  774. renderBudget = 194
  775. renderFraction = {n = 2, d = 5}
  776. updateFraction = {n = 3, d = 5}
  777. didTick = true
  778. __FUNCTION__ = "gameLoop"
  779. lastFlushTime = 841889
  780. previousUpdateWasRender = false
  781. before = 841892
  782. renderReturn = 32767
  783. after = 2701254480
  784. #11 0x00000000005b31be in runGameLoop () at main.cpp:902
  785. __FUNCTION__ = "runGameLoop"
  786. #12 0x00000000005b3491 in mainLoop () at main.cpp:1008
  787. No locals.
  788. #13 0x0000000000767417 in wzMain3 () at main_sdl.cpp:1257
  789. event = {type = 4 '\004', active = {type = 4 '\004', gain = 0 '\000', state = 0 '\000'}, key = {type = 4 '\004', which = 0 '\000', state = 0 '\000', keysym = {scancode = 164 '\244', sym = 4294967294, mod = KMOD_NONE, unicode = 0}}, motion = {type = 4 '\004', which = 0 '\000', state = 0 '\000', x = 676, y = 539, xrel = -2, yrel = -1}, button = {type = 4 '\004', which = 0 '\000', button = 0 '\000', state = 0 '\000', x = 676, y = 539}, jaxis = {type = 4 '\004', which = 0 '\000', axis = 0 '\000', value = 676}, jball = {type = 4 '\004', which = 0 '\000', ball = 0 '\000', xrel = 676, yrel = 539}, jhat = {type = 4 '\004', which = 0 '\000', hat = 0 '\000', value = 0 '\000'}, jbutton = {type = 4 '\004', which = 0 '\000', button = 0 '\000', state = 0 '\000'}, resize = {type = 4 '\004', w = 35324580, h = -2}, expose = {type = 4 '\004'}, quit = {type = 4 '\004'}, user = {type = 4 '\004', code = 35324580, data1 = 0xfffffffe, data2 = 0x0}, syswm = {type = 4 '\004', msg = 0xfffffffe}}
  790. #14 0x00000000005b3db0 in realmain (argc=1, argv=0x7fffa101f268) at main.cpp:1310
  791. utfargv = 0x7fffa101f268
  792. __FUNCTION__ = "realmain"
  793. engine = {<QAbstractFileEngineHandler> = {<No data fields>}, <No data fields>}
  794. w = 1500
  795. buf = "Using language: System locale\000\000\000`\360\001\241\377\177\000\000\340\234\247\000\000\000\000\000p\360\001\241\377\177\000\000\fwN\000\000\000\000\000\200\360\001\241\377\177\000\000\340\234\247\000\000\000\000\000\220\360\001\241\377\177\000\000\304dN\000\000\000\000\000\240\360\001\241\377\177\000\000\340\234\247\000\000\000\000\000\260\360\001\241\377\177\000\000\340GN\000\000\000\000\000\300\360\001\241\377\177\000\000p\237N\000\000\000\000\000\340\234\247\000\000\000\000\000\030|t\246@\177\000\000\001\000\000\000\001\000\000\000\070\235\247\000\000\000\000\000\000\361\001\241\377\177\000\000\066%N\000\000\000\000\000`\333\245\000\000\000\000\000\377\377\000\000\001\000\000\000h\333\245\000\000\000\000\000`\333\245\000\000\000\000\000\020\361\001\241\377\177\000\000P%N\000\000\000\000\000\060\361\001\241\377\177\000\000\266\260v\000\000\000\000"
  796. utfargc = 1
  797. h = 800
  798. #15 0x00000000007653ec in main (argc=1, argv=0x7fffa101f268) at main_sdl.cpp:24
  799. No locals.
  800. (gdb) #4 0x0000000000692c26 in buildBlueprint (psStats=0x7f409b25d0c8, xy=..., direction=34203, moduleIndex=0, state=SS_BLUEPRINT_PLANNED) at structure.cpp:1770
  801. 1770 ASSERT_OR_RETURN(NULL, psStats->pIMD[0] != NULL, "No blueprint model for %s", getStatName(psStats));
  802. (gdb) Dump of assembler code for function buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES):
  803. 1766 {
  804. 0x0000000000692b61 <+0>: push %rbp
  805. 0x0000000000692b62 <+1>: mov %rsp,%rbp
  806. 0x0000000000692b65 <+4>: push %r12
  807. 0x0000000000692b67 <+6>: push %rbx
  808. 0x0000000000692b68 <+7>: sub $0xb0,%rsp
  809. 0x0000000000692b6f <+14>: mov %rdi,-0x98(%rbp)
  810. 0x0000000000692b76 <+21>: mov %rsi,-0xa0(%rbp)
  811. 0x0000000000692b7d <+28>: mov %edx,%eax
  812. 0x0000000000692b7f <+30>: mov %ecx,-0xa8(%rbp)
  813. 0x0000000000692b85 <+36>: mov %r8d,-0xac(%rbp)
  814. 0x0000000000692b8c <+43>: mov %ax,-0xa4(%rbp)
  815.  
  816. 1767 STRUCTURE *blueprint;
  817. 1768
  818. 1769 ASSERT_OR_RETURN(NULL, psStats != NULL, "No blueprint stats");
  819. 0x0000000000692b93 <+50>: cmpq $0x0,-0x98(%rbp)
  820. 0x0000000000692b9b <+58>: setne %al
  821. 0x0000000000692b9e <+61>: mov %al,-0x11(%rbp)
  822. 0x0000000000692ba1 <+64>: movzbl -0x11(%rbp),%eax
  823. 0x0000000000692ba5 <+68>: xor $0x1,%eax
  824. 0x0000000000692ba8 <+71>: test %al,%al
  825. 0x0000000000692baa <+73>: je 0x692c0e <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+173>
  826. 0x0000000000692bac <+75>: mov $0x7ae896,%edx
  827. 0x0000000000692bb1 <+80>: mov $0x7b0c01,%esi
  828. 0x0000000000692bb6 <+85>: mov $0x19,%edi
  829. 0x0000000000692bbb <+90>: mov $0x0,%eax
  830. 0x0000000000692bc0 <+95>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  831. 0x0000000000692bc5 <+100>: mov $0x1581000,%r9d
  832. 0x0000000000692bcb <+106>: mov $0x7ae8a9,%r8d
  833. 0x0000000000692bd1 <+112>: mov $0x7ae8b9,%ecx
  834. 0x0000000000692bd6 <+117>: mov $0x7ade90,%edx
  835. 0x0000000000692bdb <+122>: mov $0x7b0c01,%esi
  836. 0x0000000000692be0 <+127>: mov $0x19,%edi
  837. 0x0000000000692be5 <+132>: mov $0x0,%eax
  838. 0x0000000000692bea <+137>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  839. 0x0000000000692bef <+142>: movzbl 0xeee4aa(%rip),%eax # 0x15810a0 <assertEnabled>
  840. 0x0000000000692bf6 <+149>: test %al,%al
  841. 0x0000000000692bf8 <+151>: je 0x692c04 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+163>
  842. 0x0000000000692bfa <+153>: mov $0x5,%edi
  843. 0x0000000000692bff <+158>: callq 0x4d2980 <raise@plt>
  844. 0x0000000000692c04 <+163>: mov $0x0,%eax
  845. 0x0000000000692c09 <+168>: jmpq 0x69313a <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1497>
  846.  
  847. 1770 ASSERT_OR_RETURN(NULL, psStats->pIMD[0] != NULL, "No blueprint model for %s", getStatName(psStats));
  848. 0x0000000000692c0e <+173>: mov -0x98(%rbp),%rax
  849. 0x0000000000692c15 <+180>: add $0x38,%rax
  850. 0x0000000000692c19 <+184>: mov $0x0,%esi
  851. 0x0000000000692c1e <+189>: mov %rax,%rdi
  852. 0x0000000000692c21 <+192>: callq 0x6a2dbe <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::operator[](std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size_type) const>
  853. => 0x0000000000692c26 <+197>: mov (%rax),%rax
  854. 0x0000000000692c29 <+200>: test %rax,%rax
  855. 0x0000000000692c2c <+203>: setne %al
  856. 0x0000000000692c2f <+206>: mov %al,-0x12(%rbp)
  857. 0x0000000000692c32 <+209>: movzbl -0x12(%rbp),%eax
  858. 0x0000000000692c36 <+213>: xor $0x1,%eax
  859. 0x0000000000692c39 <+216>: test %al,%al
  860. 0x0000000000692c3b <+218>: je 0x692cb1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+336>
  861. 0x0000000000692c3d <+220>: mov -0x98(%rbp),%rax
  862. 0x0000000000692c44 <+227>: mov %rax,%rdi
  863. 0x0000000000692c47 <+230>: callq 0x682f82 <getStatName(void const*)>
  864. 0x0000000000692c4c <+235>: mov %rax,%rcx
  865. 0x0000000000692c4f <+238>: mov $0x7ae8cc,%edx
  866. 0x0000000000692c54 <+243>: mov $0x7b0c01,%esi
  867. 0x0000000000692c59 <+248>: mov $0x19,%edi
  868. 0x0000000000692c5e <+253>: mov $0x0,%eax
  869. 0x0000000000692c63 <+258>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  870. 0x0000000000692c68 <+263>: mov $0x1581000,%r9d
  871. 0x0000000000692c6e <+269>: mov $0x7ae8e6,%r8d
  872. 0x0000000000692c74 <+275>: mov $0x7ae8ff,%ecx
  873. 0x0000000000692c79 <+280>: mov $0x7ade90,%edx
  874. 0x0000000000692c7e <+285>: mov $0x7b0c01,%esi
  875. 0x0000000000692c83 <+290>: mov $0x19,%edi
  876. 0x0000000000692c88 <+295>: mov $0x0,%eax
  877. 0x0000000000692c8d <+300>: callq 0x73a2ea <_debug(code_part, char const*, char const*, ...)>
  878. 0x0000000000692c92 <+305>: movzbl 0xeee407(%rip),%eax # 0x15810a0 <assertEnabled>
  879. 0x0000000000692c99 <+312>: test %al,%al
  880. 0x0000000000692c9b <+314>: je 0x692ca7 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+326>
  881. 0x0000000000692c9d <+316>: mov $0x5,%edi
  882. 0x0000000000692ca2 <+321>: callq 0x4d2980 <raise@plt>
  883. 0x0000000000692ca7 <+326>: mov $0x0,%eax
  884. 0x0000000000692cac <+331>: jmpq 0x69313a <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1497>
  885.  
  886. 1771
  887. 1772 Vector3i pos(xy, INT32_MIN);
  888. 0x0000000000692cb1 <+336>: lea -0xa0(%rbp),%rcx
  889. 0x0000000000692cb8 <+343>: lea -0x80(%rbp),%rax
  890. 0x0000000000692cbc <+347>: mov $0x80000000,%edx
  891. 0x0000000000692cc1 <+352>: mov %rcx,%rsi
  892. 0x0000000000692cc4 <+355>: mov %rax,%rdi
  893. 0x0000000000692cc7 <+358>: callq 0x4f71e8 <Vector3i::Vector3i(Vector2i const&, int)>
  894.  
  895. 1773 Rotation rot((direction + 0x2000)&0xC000, 0, 0); // Round direction to nearest 90°.
  896. 0x0000000000692ccc <+363>: movzwl -0xa4(%rbp),%eax
  897. 0x0000000000692cd3 <+370>: add $0x2000,%eax
  898. 0x0000000000692cd8 <+375>: mov %eax,%esi
  899. 0x0000000000692cda <+377>: and $0xc000,%esi
  900. 0x0000000000692ce0 <+383>: lea -0x40(%rbp),%rax
  901. 0x0000000000692ce4 <+387>: mov $0x0,%ecx
  902. 0x0000000000692ce9 <+392>: mov $0x0,%edx
  903. 0x0000000000692cee <+397>: mov %rax,%rdi
  904. 0x0000000000692cf1 <+400>: callq 0x4ec3ce <Rotation::Rotation(int, int, int)>
  905.  
  906. 1774
  907. 1775 StructureBounds b = getStructureBounds(psStats, xy, direction);
  908. 0x0000000000692cf6 <+405>: movzwl -0xa4(%rbp),%edx
  909. 0x0000000000692cfd <+412>: mov -0xa0(%rbp),%rcx
  910. 0x0000000000692d04 <+419>: mov -0x98(%rbp),%rax
  911. 0x0000000000692d0b <+426>: mov %rcx,%rsi
  912. 0x0000000000692d0e <+429>: mov %rax,%rdi
  913. 0x0000000000692d11 <+432>: callq 0x6a1968 <getStructureBounds(STRUCTURE_STATS const*, Vector2i, uint16_t)>
  914. 0x0000000000692d16 <+437>: mov %rax,%rcx
  915. 0x0000000000692d19 <+440>: mov %rdx,%rax
  916. 0x0000000000692d1c <+443>: mov %rcx,-0xc0(%rbp)
  917. 0x0000000000692d23 <+450>: mov %rax,-0xb8(%rbp)
  918. 0x0000000000692d2a <+457>: mov -0xc0(%rbp),%rax
  919. 0x0000000000692d31 <+464>: mov %rax,-0x90(%rbp)
  920. 0x0000000000692d38 <+471>: mov -0xb8(%rbp),%rax
  921. 0x0000000000692d3f <+478>: mov %rax,-0x88(%rbp)
  922.  
  923. 1776 for (int j = 0; j <= b.size.y; ++j)
  924. 0x0000000000692d46 <+485>: movl $0x0,-0x18(%rbp)
  925. 0x0000000000692d4d <+492>: jmp 0x692dac <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+587>
  926. 0x0000000000692da8 <+583>: addl $0x1,-0x18(%rbp)
  927. 0x0000000000692dac <+587>: mov -0x84(%rbp),%eax
  928. 0x0000000000692db2 <+593>: cmp -0x18(%rbp),%eax
  929. 0x0000000000692db5 <+596>: setge %al
  930. 0x0000000000692db8 <+599>: test %al,%al
  931. 0x0000000000692dba <+601>: jne 0x692d4f <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+494>
  932.  
  933. 1777 for (int i = 0; i <= b.size.x; ++i)
  934. 0x0000000000692d4f <+494>: movl $0x0,-0x1c(%rbp)
  935. 0x0000000000692d56 <+501>: jmp 0x692d98 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+567>
  936. 0x0000000000692d94 <+563>: addl $0x1,-0x1c(%rbp)
  937. 0x0000000000692d98 <+567>: mov -0x88(%rbp),%eax
  938. 0x0000000000692d9e <+573>: cmp -0x1c(%rbp),%eax
  939. 0x0000000000692da1 <+576>: setge %al
  940. 0x0000000000692da4 <+579>: test %al,%al
  941. 0x0000000000692da6 <+581>: jne 0x692d58 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+503>
  942.  
  943. 1778 {
  944. 1779 pos.z = std::max(pos.z, map_TileHeight(b.map.x + i, b.map.y + j));
  945. 0x0000000000692d58 <+503>: mov -0x8c(%rbp),%eax
  946. 0x0000000000692d5e <+509>: mov %eax,%edx
  947. 0x0000000000692d60 <+511>: add -0x18(%rbp),%edx
  948. 0x0000000000692d63 <+514>: mov -0x90(%rbp),%eax
  949. 0x0000000000692d69 <+520>: add -0x1c(%rbp),%eax
  950. 0x0000000000692d6c <+523>: mov %edx,%esi
  951. 0x0000000000692d6e <+525>: mov %eax,%edi
  952. 0x0000000000692d70 <+527>: callq 0x68d603 <map_TileHeight(int32_t, int32_t)>
  953. 0x0000000000692d75 <+532>: mov %eax,-0x28(%rbp)
  954. 0x0000000000692d78 <+535>: lea -0x28(%rbp),%rax
  955. 0x0000000000692d7c <+539>: lea -0x80(%rbp),%rdx
  956. 0x0000000000692d80 <+543>: add $0x8,%rdx
  957. 0x0000000000692d84 <+547>: mov %rax,%rsi
  958. 0x0000000000692d87 <+550>: mov %rdx,%rdi
  959. 0x0000000000692d8a <+553>: callq 0x4dd1ae <std::max<int>(int const&, int const&)>
  960. 0x0000000000692d8f <+558>: mov (%rax),%eax
  961. 0x0000000000692d91 <+560>: mov %eax,-0x78(%rbp)
  962.  
  963. 1780 }
  964. 1781
  965. 1782 int moduleNumber = 0;
  966. 0x0000000000692dbc <+603>: movl $0x0,-0x2c(%rbp)
  967.  
  968. 1783 std::vector<iIMDShape *> const *pIMD = &psStats->pIMD;
  969. 0x0000000000692dc3 <+610>: mov -0x98(%rbp),%rax
  970. 0x0000000000692dca <+617>: add $0x38,%rax
  971. 0x0000000000692dce <+621>: mov %rax,-0x48(%rbp)
  972.  
  973. 1784 if (IsStatExpansionModule(psStats))
  974. 0x0000000000692dd2 <+625>: mov -0x98(%rbp),%rax
  975. 0x0000000000692dd9 <+632>: mov %rax,%rdi
  976. 0x0000000000692ddc <+635>: callq 0x68ddc9 <IsStatExpansionModule(STRUCTURE_STATS const*)>
  977. 0x0000000000692de1 <+640>: test %al,%al
  978. 0x0000000000692de3 <+642>: je 0x692ea1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+832>
  979.  
  980. 1785 {
  981. 1786 STRUCTURE *baseStruct = castStructure(worldTile(xy)->psObject);
  982. 0x0000000000692de9 <+648>: lea -0xa0(%rbp),%rax
  983. 0x0000000000692df0 <+655>: mov %rax,%rdi
  984. 0x0000000000692df3 <+658>: callq 0x68d5d9 <worldTile(Vector2i const&)>
  985. 0x0000000000692df8 <+663>: mov 0x20(%rax),%rax
  986. 0x0000000000692dfc <+667>: mov %rax,%rdi
  987. 0x0000000000692dff <+670>: callq 0x68d13f <castStructure(SIMPLE_OBJECT*)>
  988. 0x0000000000692e04 <+675>: mov %rax,-0x50(%rbp)
  989.  
  990. 1787 if (baseStruct != NULL)
  991. 0x0000000000692e08 <+679>: cmpq $0x0,-0x50(%rbp)
  992. 0x0000000000692e0d <+684>: je 0x692ea1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+832>
  993.  
  994. 1788 {
  995. 1789 if (moduleIndex == 0)
  996. 0x0000000000692e13 <+690>: cmpl $0x0,-0xa8(%rbp)
  997. 0x0000000000692e1a <+697>: jne 0x692e33 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+722>
  998.  
  999. 1790 {
  1000. 1791 moduleIndex = nextModuleToBuild(baseStruct, 0);
  1001. 0x0000000000692e1c <+699>: mov -0x50(%rbp),%rax
  1002. 0x0000000000692e20 <+703>: mov $0x0,%esi
  1003. 0x0000000000692e25 <+708>: mov %rax,%rdi
  1004. 0x0000000000692e28 <+711>: callq 0x52ed8a <nextModuleToBuild(STRUCTURE const*, int)>
  1005. 0x0000000000692e2d <+716>: mov %eax,-0xa8(%rbp)
  1006.  
  1007. 1792 }
  1008. 1793 int baseModuleNumber = moduleIndex*2 - 1; // *2-1 because even-numbered IMDs are structures, odd-numbered IMDs are just the modules.
  1009. 0x0000000000692e33 <+722>: mov -0xa8(%rbp),%eax
  1010. 0x0000000000692e39 <+728>: add %eax,%eax
  1011. 0x0000000000692e3b <+730>: sub $0x1,%eax
  1012. 0x0000000000692e3e <+733>: mov %eax,-0x20(%rbp)
  1013.  
  1014. 1794 std::vector<iIMDShape *> const *basepIMD = &baseStruct->pStructureType->pIMD;
  1015. 0x0000000000692e41 <+736>: mov -0x50(%rbp),%rax
  1016. 0x0000000000692e45 <+740>: mov 0xa8(%rax),%rax
  1017. 0x0000000000692e4c <+747>: add $0x38,%rax
  1018. 0x0000000000692e50 <+751>: mov %rax,-0x58(%rbp)
  1019.  
  1020. 1795 if ((unsigned)baseModuleNumber < basepIMD->size())
  1021. 0x0000000000692e54 <+755>: mov -0x20(%rbp),%eax
  1022. 0x0000000000692e57 <+758>: mov %eax,%ebx
  1023. 0x0000000000692e59 <+760>: mov -0x58(%rbp),%rax
  1024. 0x0000000000692e5d <+764>: mov %rax,%rdi
  1025. 0x0000000000692e60 <+767>: callq 0x572638 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size() const>
  1026. 0x0000000000692e65 <+772>: cmp %rax,%rbx
  1027. 0x0000000000692e68 <+775>: setb %al
  1028. 0x0000000000692e6b <+778>: test %al,%al
  1029. 0x0000000000692e6d <+780>: je 0x692ea1 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+832>
  1030.  
  1031. 1796 {
  1032. 1797 // Draw the module.
  1033. 1798 moduleNumber = baseModuleNumber;
  1034. 0x0000000000692e6f <+782>: mov -0x20(%rbp),%eax
  1035. 0x0000000000692e72 <+785>: mov %eax,-0x2c(%rbp)
  1036.  
  1037. 1799 pIMD = basepIMD;
  1038. 0x0000000000692e75 <+788>: mov -0x58(%rbp),%rax
  1039. 0x0000000000692e79 <+792>: mov %rax,-0x48(%rbp)
  1040.  
  1041. 1800 pos = baseStruct->pos;
  1042. 0x0000000000692e7d <+796>: mov -0x50(%rbp),%rax
  1043. 0x0000000000692e81 <+800>: mov 0x10(%rax),%rdx
  1044. 0x0000000000692e85 <+804>: mov %rdx,-0x80(%rbp)
  1045. 0x0000000000692e89 <+808>: mov 0x18(%rax),%eax
  1046. 0x0000000000692e8c <+811>: mov %eax,-0x78(%rbp)
  1047.  
  1048. 1801 rot = baseStruct->rot;
  1049. 0x0000000000692e8f <+814>: mov -0x50(%rbp),%rax
  1050. 0x0000000000692e93 <+818>: mov 0x1c(%rax),%edx
  1051. 0x0000000000692e96 <+821>: mov %edx,-0x40(%rbp)
  1052. 0x0000000000692e99 <+824>: movzwl 0x20(%rax),%eax
  1053. 0x0000000000692e9d <+828>: mov %ax,-0x3c(%rbp)
  1054.  
  1055. 1802 }
  1056. 1803 }
  1057. 1804 }
  1058. 1805
  1059. 1806 blueprint = new STRUCTURE(0, selectedPlayer);
  1060. 0x0000000000692ea1 <+832>: mov $0x198,%edi
  1061. 0x0000000000692ea6 <+837>: callq 0x4d2910 <_Znwm@plt>
  1062. 0x0000000000692eab <+842>: mov %rax,%rbx
  1063. 0x0000000000692eae <+845>: mov 0xeee834(%rip),%edx # 0x15816e8 <selectedPlayer>
  1064. 0x0000000000692eb4 <+851>: mov %rbx,%rax
  1065. 0x0000000000692eb7 <+854>: mov $0x0,%esi
  1066. 0x0000000000692ebc <+859>: mov %rax,%rdi
  1067. 0x0000000000692ebf <+862>: callq 0x6984e8 <STRUCTURE::STRUCTURE(uint32_t, unsigned int)>
  1068. 0x0000000000692ec4 <+867>: mov %rbx,-0x60(%rbp)
  1069. 0x0000000000693149 <+1512>: mov %rbx,%rdi
  1070. 0x000000000069314c <+1515>: callq 0x4d2790 <_ZdlPv@plt>
  1071. 0x0000000000693151 <+1520>: mov %r12,%rax
  1072. 0x0000000000693154 <+1523>: mov %rax,%rdi
  1073. 0x0000000000693157 <+1526>: callq 0x4d3c50 <_Unwind_Resume@plt>
  1074.  
  1075. 1807 // construct the fake structure
  1076. 1808 blueprint->pStructureType = const_cast<STRUCTURE_STATS *>(psStats); // Couldn't be bothered to fix const correctness everywhere.
  1077. 0x0000000000692ec8 <+871>: mov -0x60(%rbp),%rax
  1078. 0x0000000000692ecc <+875>: mov -0x98(%rbp),%rdx
  1079. 0x0000000000692ed3 <+882>: mov %rdx,0xa8(%rax)
  1080.  
  1081. 1809 blueprint->visible[selectedPlayer] = UBYTE_MAX;
  1082. 0x0000000000692eda <+889>: mov 0xeee808(%rip),%eax # 0x15816e8 <selectedPlayer>
  1083. 0x0000000000692ee0 <+895>: mov -0x60(%rbp),%rdx
  1084. 0x0000000000692ee4 <+899>: mov %eax,%eax
  1085. 0x0000000000692ee6 <+901>: movb $0xff,0x4b(%rdx,%rax,1)
  1086.  
  1087. 1810 blueprint->sDisplay.imd = (*pIMD)[std::min<int>(moduleNumber, pIMD->size() - 1)];
  1088. 0x0000000000692eeb <+906>: mov -0x48(%rbp),%rax
  1089. 0x0000000000692eef <+910>: mov %rax,%rdi
  1090. 0x0000000000692ef2 <+913>: callq 0x572638 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size() const>
  1091. 0x0000000000692ef7 <+918>: sub $0x1,%eax
  1092. 0x0000000000692efa <+921>: mov %eax,-0x30(%rbp)
  1093. 0x0000000000692efd <+924>: lea -0x30(%rbp),%rdx
  1094. 0x0000000000692f01 <+928>: lea -0x2c(%rbp),%rax
  1095. 0x0000000000692f05 <+932>: mov %rdx,%rsi
  1096. 0x0000000000692f08 <+935>: mov %rax,%rdi
  1097. 0x0000000000692f0b <+938>: callq 0x4e08c3 <std::min<int>(int const&, int const&)>
  1098. 0x0000000000692f10 <+943>: mov (%rax),%eax
  1099. 0x0000000000692f12 <+945>: movslq %eax,%rdx
  1100. 0x0000000000692f15 <+948>: mov -0x48(%rbp),%rax
  1101. 0x0000000000692f19 <+952>: mov %rdx,%rsi
  1102. 0x0000000000692f1c <+955>: mov %rax,%rdi
  1103. 0x0000000000692f1f <+958>: callq 0x6a2dbe <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::operator[](std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size_type) const>
  1104. 0x0000000000692f24 <+963>: mov (%rax),%rdx
  1105. 0x0000000000692f27 <+966>: mov -0x60(%rbp),%rax
  1106. 0x0000000000692f2b <+970>: mov %rdx,0x30(%rax)
  1107.  
  1108. 1811 blueprint->pos = pos;
  1109. 0x0000000000692f2f <+974>: mov -0x60(%rbp),%rax
  1110. 0x0000000000692f33 <+978>: mov -0x80(%rbp),%rdx
  1111. 0x0000000000692f37 <+982>: mov %rdx,0x10(%rax)
  1112. 0x0000000000692f3b <+986>: mov -0x78(%rbp),%edx
  1113. 0x0000000000692f3e <+989>: mov %edx,0x18(%rax)
  1114.  
  1115. 1812 blueprint->rot = rot;
  1116. 0x0000000000692f41 <+992>: mov -0x60(%rbp),%rax
  1117. 0x0000000000692f45 <+996>: mov -0x40(%rbp),%edx
  1118. 0x0000000000692f48 <+999>: mov %edx,0x1c(%rax)
  1119. 0x0000000000692f4b <+1002>: movzwl -0x3c(%rbp),%edx
  1120. 0x0000000000692f4f <+1006>: mov %dx,0x20(%rax)
  1121.  
  1122. 1813 blueprint->selected = false;
  1123. 0x0000000000692f53 <+1010>: mov -0x60(%rbp),%rax
  1124. 0x0000000000692f57 <+1014>: movb $0x0,0x49(%rax)
  1125.  
  1126. 1814
  1127. 1815 blueprint->numWeaps = 0;
  1128. 0x0000000000692f5b <+1018>: mov -0x60(%rbp),%rax
  1129. 0x0000000000692f5f <+1022>: movw $0x0,0xd0(%rax)
  1130.  
  1131. 1816 blueprint->asWeaps[0].nStat = 0;
  1132. 0x0000000000692f68 <+1031>: mov -0x60(%rbp),%rax
  1133. 0x0000000000692f6c <+1035>: movl $0x0,0xd4(%rax)
  1134.  
  1135. 1817
  1136. 1818 // give defensive structures a weapon
  1137. 1819 if (psStats->psWeapStat[0])
  1138. 0x0000000000692f76 <+1045>: mov -0x98(%rbp),%rax
  1139. 0x0000000000692f7d <+1052>: mov 0x70(%rax),%rax
  1140. 0x0000000000692f81 <+1056>: test %rax,%rax
  1141. 0x0000000000692f84 <+1059>: je 0x692fc5 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1124>
  1142.  
  1143. 1820 {
  1144. 1821 blueprint->asWeaps[0].nStat = psStats->psWeapStat[0] - asWeaponStats;
  1145. 0x0000000000692f86 <+1061>: mov -0x98(%rbp),%rax
  1146. 0x0000000000692f8d <+1068>: mov 0x70(%rax),%rax
  1147. 0x0000000000692f91 <+1072>: mov %rax,%rdx
  1148. 0x0000000000692f94 <+1075>: mov 0xaf1455(%rip),%rax # 0x11843f0 <asWeaponStats>
  1149. 0x0000000000692f9b <+1082>: mov %rdx,%rcx
  1150. 0x0000000000692f9e <+1085>: sub %rax,%rcx
  1151. 0x0000000000692fa1 <+1088>: mov %rcx,%rax
  1152. 0x0000000000692fa4 <+1091>: mov %rax,%rdx
  1153. 0x0000000000692fa7 <+1094>: sar $0x3,%rdx
  1154. 0x0000000000692fab <+1098>: movabs $0x34f72c234f72c235,%rax
  1155. 0x0000000000692fb5 <+1108>: imul %rdx,%rax
  1156. 0x0000000000692fb9 <+1112>: mov %eax,%edx
  1157. 0x0000000000692fbb <+1114>: mov -0x60(%rbp),%rax
  1158. 0x0000000000692fbf <+1118>: mov %edx,0xd4(%rax)
  1159.  
  1160. 1822 }
  1161. 1823 // things with sensors or ecm (or repair facilities) need these set, even if they have no official weapon
  1162. 1824 blueprint->numWeaps = 0;
  1163. 0x0000000000692fc5 <+1124>: mov -0x60(%rbp),%rax
  1164. 0x0000000000692fc9 <+1128>: movw $0x0,0xd0(%rax)
  1165.  
  1166. 1825 blueprint->asWeaps[0].lastFired = 0;
  1167. 0x0000000000692fd2 <+1137>: mov -0x60(%rbp),%rax
  1168. 0x0000000000692fd6 <+1141>: movl $0x0,0xdc(%rax)
  1169.  
  1170. 1826 blueprint->asWeaps[0].rot.pitch = 0;
  1171. 0x0000000000692fe0 <+1151>: mov -0x60(%rbp),%rax
  1172. 0x0000000000692fe4 <+1155>: movw $0x0,0xe6(%rax)
  1173.  
  1174. 1827 blueprint->asWeaps[0].rot.direction = 0;
  1175. 0x0000000000692fed <+1164>: mov -0x60(%rbp),%rax
  1176. 0x0000000000692ff1 <+1168>: movw $0x0,0xe4(%rax)
  1177.  
  1178. 1828 blueprint->asWeaps[0].rot.roll = 0;
  1179. 0x0000000000692ffa <+1177>: mov -0x60(%rbp),%rax
  1180. 0x0000000000692ffe <+1181>: movw $0x0,0xe8(%rax)
  1181.  
  1182. 1829 blueprint->asWeaps[0].prevRot = blueprint->asWeaps[0].rot;
  1183. 0x0000000000693007 <+1190>: mov -0x60(%rbp),%rax
  1184. 0x000000000069300b <+1194>: mov -0x60(%rbp),%rdx
  1185. 0x000000000069300f <+1198>: mov 0xe4(%rdx),%ecx
  1186. 0x0000000000693015 <+1204>: mov %ecx,0xea(%rax)
  1187. 0x000000000069301b <+1210>: movzwl 0xe8(%rdx),%edx
  1188. 0x0000000000693022 <+1217>: mov %dx,0xee(%rax)
  1189.  
  1190. 1830
  1191. 1831 blueprint->expectedDamage = 0;
  1192. 0x0000000000693029 <+1224>: mov -0x60(%rbp),%rax
  1193. 0x000000000069302d <+1228>: movl $0x0,0x170(%rax)
  1194.  
  1195. 1832
  1196. 1833 // Times must be different, but don't otherwise matter.
  1197. 1834 blueprint->time = 23;
  1198. 0x0000000000693037 <+1238>: mov -0x60(%rbp),%rax
  1199. 0x000000000069303b <+1242>: movl $0x17,0x2c(%rax)
  1200.  
  1201. 1835 blueprint->prevTime = 42;
  1202. 0x0000000000693042 <+1249>: mov -0x60(%rbp),%rax
  1203. 0x0000000000693046 <+1253>: movl $0x2a,0x174(%rax)
  1204.  
  1205. 1836
  1206. 1837 blueprint->status = state;
  1207. 0x0000000000693050 <+1263>: mov -0x60(%rbp),%rax
  1208. 0x0000000000693054 <+1267>: mov -0xac(%rbp),%edx
  1209. 0x000000000069305a <+1273>: mov %edx,0xb0(%rax)
  1210.  
  1211. 1838
  1212. 1839 // Rotate wall if needed.
  1213. 1840 if (blueprint->pStructureType->type == REF_WALL || blueprint->pStructureType->type == REF_GATE)
  1214. 0x0000000000693060 <+1279>: mov -0x60(%rbp),%rax
  1215. 0x0000000000693064 <+1283>: mov 0xa8(%rax),%rax
  1216. 0x000000000069306b <+1290>: mov 0x10(%rax),%eax
  1217. 0x000000000069306e <+1293>: cmp $0x7,%eax
  1218. 0x0000000000693071 <+1296>: je 0x69308a <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1321>
  1219. 0x0000000000693073 <+1298>: mov -0x60(%rbp),%rax
  1220. 0x0000000000693077 <+1302>: mov 0xa8(%rax),%rax
  1221. 0x000000000069307e <+1309>: mov 0x10(%rax),%eax
  1222. 0x0000000000693081 <+1312>: cmp $0x16,%eax
  1223. 0x0000000000693084 <+1315>: jne 0x693136 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1493>
  1224.  
  1225. 1841 {
  1226. 1842 WallOrientation scanType = structChooseWallTypeBlueprint(map_coord(removeZ(blueprint->pos)));
  1227. 0x000000000069308a <+1321>: mov -0x60(%rbp),%rax
  1228. 0x000000000069308e <+1325>: add $0x10,%rax
  1229. 0x0000000000693092 <+1329>: mov %rax,%rdi
  1230. 0x0000000000693095 <+1332>: callq 0x68cb60 <removeZ(Vector3i const&)>
  1231. 0x000000000069309a <+1337>: mov %rax,-0x70(%rbp)
  1232. 0x000000000069309e <+1341>: lea -0x70(%rbp),%rax
  1233. 0x00000000006930a2 <+1345>: mov %rax,%rdi
  1234. 0x00000000006930a5 <+1348>: callq 0x68d2f1 <map_coord(Vector2i const&)>
  1235. 0x00000000006930aa <+1353>: mov %rax,%rdi
  1236. 0x00000000006930ad <+1356>: callq 0x690c10 <structChooseWallTypeBlueprint(Vector2i)>
  1237. 0x00000000006930b2 <+1361>: mov %eax,-0x24(%rbp)
  1238.  
  1239. 1843 unsigned type = wallType(scanType);
  1240. 0x00000000006930b5 <+1364>: mov -0x24(%rbp),%eax
  1241. 0x00000000006930b8 <+1367>: mov %eax,%edi
  1242. 0x00000000006930ba <+1369>: callq 0x690656 <wallType(WallOrientation)>
  1243. 0x00000000006930bf <+1374>: movzwl %ax,%eax
  1244. 0x00000000006930c2 <+1377>: mov %eax,-0x34(%rbp)
  1245.  
  1246. 1844 if (scanType != WallConnectNone)
  1247. 0x00000000006930c5 <+1380>: cmpl $0x0,-0x24(%rbp)
  1248. 0x00000000006930c9 <+1384>: je 0x693136 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+1493>
  1249.  
  1250. 1845 {
  1251. 1846 blueprint->rot.direction = wallDir(scanType);
  1252. 0x00000000006930cb <+1386>: mov -0x24(%rbp),%eax
  1253. 0x00000000006930ce <+1389>: mov %eax,%edi
  1254. 0x00000000006930d0 <+1391>: callq 0x6905cb <wallDir(WallOrientation)>
  1255. 0x00000000006930d5 <+1396>: mov -0x60(%rbp),%rdx
  1256. 0x00000000006930d9 <+1400>: mov %ax,0x1c(%rdx)
  1257.  
  1258. 1847 blueprint->sDisplay.imd = blueprint->pStructureType->pIMD[std::min<unsigned>(type, blueprint->pStructureType->pIMD.size() - 1)];
  1259. 0x00000000006930dd <+1404>: mov -0x60(%rbp),%rax
  1260. 0x00000000006930e1 <+1408>: mov 0xa8(%rax),%rax
  1261. 0x00000000006930e8 <+1415>: add $0x38,%rax
  1262. 0x00000000006930ec <+1419>: mov %rax,%rdi
  1263. 0x00000000006930ef <+1422>: callq 0x572638 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size() const>
  1264. 0x00000000006930f4 <+1427>: sub $0x1,%eax
  1265. 0x00000000006930f7 <+1430>: mov %eax,-0x38(%rbp)
  1266. 0x00000000006930fa <+1433>: lea -0x38(%rbp),%rdx
  1267. 0x00000000006930fe <+1437>: lea -0x34(%rbp),%rax
  1268. 0x0000000000693102 <+1441>: mov %rdx,%rsi
  1269. 0x0000000000693105 <+1444>: mov %rax,%rdi
  1270. 0x0000000000693108 <+1447>: callq 0x4e372b <std::min<unsigned int>(unsigned int const&, unsigned int const&)>
  1271. 0x000000000069310d <+1452>: mov (%rax),%eax
  1272. 0x000000000069310f <+1454>: mov %eax,%eax
  1273. 0x0000000000693111 <+1456>: mov -0x60(%rbp),%rdx
  1274. 0x0000000000693115 <+1460>: mov 0xa8(%rdx),%rdx
  1275. 0x000000000069311c <+1467>: add $0x38,%rdx
  1276. 0x0000000000693120 <+1471>: mov %rax,%rsi
  1277. 0x0000000000693123 <+1474>: mov %rdx,%rdi
  1278. 0x0000000000693126 <+1477>: callq 0x4fa8d0 <std::vector<iIMDShape*, std::allocator<iIMDShape*> >::operator[](std::vector<iIMDShape*, std::allocator<iIMDShape*> >::size_type)>
  1279. 0x000000000069312b <+1482>: mov (%rax),%rdx
  1280. 0x000000000069312e <+1485>: mov -0x60(%rbp),%rax
  1281. 0x0000000000693132 <+1489>: mov %rdx,0x30(%rax)
  1282.  
  1283. 1848 }
  1284. 1849 }
  1285. 1850
  1286. 1851 return blueprint;
  1287. 0x0000000000693136 <+1493>: mov -0x60(%rbp),%rax
  1288.  
  1289. 1852 }
  1290. 0x000000000069313a <+1497>: add $0xb0,%rsp
  1291. 0x0000000000693141 <+1504>: pop %rbx
  1292. 0x0000000000693142 <+1505>: pop %r12
  1293. 0x0000000000693144 <+1507>: leaveq
  1294. 0x0000000000693145 <+1508>: retq
  1295. 0x0000000000693146 <+1509>: mov %rax,%r12
  1296.  
  1297. End of assembler dump.
  1298. (gdb) rax 0x0 0
  1299. rbx 0x21b 539
  1300. rcx 0x0 0
  1301. rdx 0x0 0
  1302. rsi 0x0 0
  1303. rdi 0x7f409b25d100 139915457581312
  1304. rbp 0x7fffa101dc50 0x7fffa101dc50
  1305. rsp 0x7fffa101db90 0x7fffa101db90
  1306. r8 0x5 5
  1307. r9 0x101010101010101 72340172838076673
  1308. r10 0x0 0
  1309. r11 0x7f40a6792f22 139915647594274
  1310. r12 0x16 22
  1311. r13 0x1 1
  1312. r14 0xf 15
  1313. r15 0x7f40aa0f0269 139915707744873
  1314. rip 0x692c26 0x692c26 <buildBlueprint(STRUCTURE_STATS const*, Vector2i, uint16_t, unsigned int, STRUCT_STATES)+197>
  1315. eflags 0x246 [ PF ZF IF ]
  1316. cs 0x33 51
  1317. ss 0x2b 43
  1318. ds 0x0 0
  1319. es 0x0 0
  1320. fs 0x0 0
  1321. gs 0x0 0
  1322. (gdb) A debugging session is active.
  1323.  
  1324. Inferior 1 [process 5220] will be detached.
  1325.  
  1326. Quit anyway? (y or n) [answered Y; input not from terminal]
  1327. Detaching from program: /usr/local/bin/warzone2100, process 5220
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement