; ; common_control87 from 0x180142198 to 0x180142456 (702 bytes) ; ; 2 xrefs: ; > j_common_control87 @ 0x180142190 ; > @ 0x180203d28 ; ; This function is hookable on this platform! ; ; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA ; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings ; mov [rsp+arg_8], rbx ; +0x0, 0x180142198 mov [rsp+arg_10], rsi ; +0x5, 0x18014219d push r12 ; +0xa, 0x1801421a2 push r14 ; +0xc, 0x1801421a4 push r15 ; +0xe, 0x1801421a6 sub rsp, 20h ; +0x10, 0x1801421a8 mov r12d, edx ; +0x14, 0x1801421ac mov ebx, ecx ; +0x17, 0x1801421af and r12d, 308031Fh ; +0x19, 0x1801421b1 call _get_fpsr ; +0x20, 0x1801421b8 mov r10d, eax ; +0x25, 0x1801421bd mov r9d, eax ; +0x28, 0x1801421c0 shr r9d, 3 ; +0x2b, 0x1801421c3 and r9d, 10h ; +0x2f, 0x1801421c7 mov r8d, eax ; +0x33, 0x1801421cb mov r14d, 200h ; +0x36, 0x1801421ce mov edx, r9d ; +0x3c, 0x1801421d4 or edx, 8 ; +0x3f, 0x1801421d7 and r8d, r14d ; +0x42, 0x1801421da cmovz edx, r9d ; +0x45, 0x1801421dd mov ecx, edx ; +0x49, 0x1801421e1 or ecx, 4 ; +0x4b, 0x1801421e3 and eax, 400h ; +0x4e, 0x1801421e6 cmovz ecx, edx ; +0x53, 0x1801421eb mov eax, r10d ; +0x56, 0x1801421ee mov r9d, 800h ; +0x59, 0x1801421f1 mov edx, ecx ; +0x5f, 0x1801421f7 or edx, 2 ; +0x61, 0x1801421f9 and eax, r9d ; +0x64, 0x1801421fc cmovz edx, ecx ; +0x67, 0x1801421ff mov eax, r10d ; +0x6a, 0x180142202 mov r11d, 1000h ; +0x6d, 0x180142205 mov ecx, edx ; +0x73, 0x18014220b or ecx, 1 ; +0x75, 0x18014220d and eax, r11d ; +0x78, 0x180142210 cmovz ecx, edx ; +0x7b, 0x180142213 mov eax, r10d ; +0x7e, 0x180142216 mov esi, 100h ; +0x81, 0x180142219 mov edx, ecx ; +0x86, 0x18014221e bts edx, 13h ; +0x88, 0x180142220 and eax, esi ; +0x8c, 0x180142224 cmovz edx, ecx ; +0x8e, 0x180142226 mov eax, r10d ; +0x91, 0x180142229 mov r15d, 6000h ; +0x94, 0x18014222c and eax, r15d ; +0x9a, 0x180142232 jz short loc_180142259 ; +0x9d, 0x180142235 cmp eax, 2000h ; +0x9f, 0x180142237 jz short loc_180142257 ; +0xa4, 0x18014223c cmp eax, 4000h ; +0xa6, 0x18014223e jz short loc_180142252 ; +0xab, 0x180142243 cmp eax, r15d ; +0xad, 0x180142245 jnz short loc_180142259 ; +0xb0, 0x180142248 or edx, 300h ; +0xb2, 0x18014224a jmp short loc_180142259 ; +0xb8, 0x180142250 or edx, r14d ; +0xba, 0x180142252 jmp short loc_180142259 ; +0xbd, 0x180142255 or edx, esi ; +0xbf, 0x180142257 and r10d, 8040h ; +0xc1, 0x180142259 sub r10d, 40h ; '@' ; +0xc8, 0x180142260 jz short loc_180142283 ; +0xcc, 0x180142264 sub r10d, 7FC0h ; +0xce, 0x180142266 jz short loc_18014227B ; +0xd5, 0x18014226d cmp r10d, 40h ; '@' ; +0xd7, 0x18014226f jnz short loc_180142287 ; +0xdb, 0x180142273 bts edx, 18h ; +0xdd, 0x180142275 jmp short loc_180142287 ; +0xe1, 0x180142279 or edx, 3000000h ; +0xe3, 0x18014227b jmp short loc_180142287 ; +0xe9, 0x180142281 bts edx, 19h ; +0xeb, 0x180142283 mov r8d, r12d ; +0xef, 0x180142287 not r8d ; +0xf2, 0x18014228a and r8d, edx ; +0xf5, 0x18014228d and ebx, r12d ; +0xf8, 0x180142290 or r8d, ebx ; +0xfb, 0x180142293 cmp r8d, edx ; +0xfe, 0x180142296 jz loc_18014243F ; +0x101, 0x180142299 mov ecx, r8d ; +0x107, 0x18014229f and ecx, 10h ; +0x10a, 0x1801422a2 shl ecx, 3 ; +0x10d, 0x1801422a5 mov eax, r8d ; +0x110, 0x1801422a8 mov edx, ecx ; +0x113, 0x1801422ab or edx, r14d ; +0x115, 0x1801422ad and al, 8 ; +0x118, 0x1801422b0 cmovz edx, ecx ; +0x11a, 0x1801422b2 mov eax, r8d ; +0x11d, 0x1801422b5 mov ecx, edx ; +0x120, 0x1801422b8 bts ecx, 0Ah ; +0x122, 0x1801422ba and al, 4 ; +0x126, 0x1801422be cmovz ecx, edx ; +0x128, 0x1801422c0 mov eax, r8d ; +0x12b, 0x1801422c3 mov edx, ecx ; +0x12e, 0x1801422c6 or edx, r9d ; +0x130, 0x1801422c8 and al, 2 ; +0x133, 0x1801422cb cmovz edx, ecx ; +0x135, 0x1801422cd mov eax, r8d ; +0x138, 0x1801422d0 mov ecx, edx ; +0x13b, 0x1801422d3 or ecx, r11d ; +0x13d, 0x1801422d5 and al, 1 ; +0x140, 0x1801422d8 cmovz ecx, edx ; +0x142, 0x1801422da mov eax, r8d ; +0x145, 0x1801422dd mov ebx, ecx ; +0x148, 0x1801422e0 or ebx, esi ; +0x14a, 0x1801422e2 and eax, 80000h ; +0x14c, 0x1801422e4 cmovz ebx, ecx ; +0x151, 0x1801422e9 mov eax, r8d ; +0x154, 0x1801422ec and eax, 300h ; +0x157, 0x1801422ef jz short loc_180142319 ; +0x15c, 0x1801422f4 cmp eax, esi ; +0x15e, 0x1801422f6 jz short loc_180142315 ; +0x160, 0x1801422f8 cmp eax, r14d ; +0x162, 0x1801422fa jz short loc_18014230F ; +0x165, 0x1801422fd mov [rsp+38h+arg_0], ebx ; +0x167, 0x1801422ff cmp eax, 300h ; +0x16b, 0x180142303 jnz short loc_18014231D ; +0x170, 0x180142308 or ebx, r15d ; +0x172, 0x18014230a jmp short loc_180142319 ; +0x175, 0x18014230d bts ebx, 0Eh ; +0x177, 0x18014230f jmp short loc_180142319 ; +0x17b, 0x180142313 bts ebx, 0Dh ; +0x17d, 0x180142315 mov [rsp+38h+arg_0], ebx ; +0x181, 0x180142319 and r8d, 3000000h ; +0x185, 0x18014231d cmp r8d, 1000000h ; +0x18c, 0x180142324 jz short loc_18014234A ; +0x193, 0x18014232b cmp r8d, 2000000h ; +0x195, 0x18014232d jz short loc_180142345 ; +0x19c, 0x180142334 cmp r8d, 3000000h ; +0x19e, 0x180142336 jnz short loc_180142354 ; +0x1a5, 0x18014233d bts ebx, 0Fh ; +0x1a7, 0x18014233f jmp short loc_180142350 ; +0x1ab, 0x180142343 or ebx, 40h ; +0x1ad, 0x180142345 jmp short loc_180142350 ; +0x1b0, 0x180142348 or ebx, 8040h ; +0x1b2, 0x18014234a mov [rsp+38h+arg_0], ebx ; +0x1b8, 0x180142350 cmp cs:byte_1801B2300, 0 ; +0x1bc, 0x180142354 jz short loc_180142393 ; +0x1c3, 0x18014235b test bl, 40h ; +0x1c5, 0x18014235d jz short loc_180142393 ; +0x1c8, 0x180142360 mov ecx, ebx ; +0x1ca, 0x180142362 call _set_fpsr ; +0x1cc, 0x180142364 jmp short loc_18014239D ; +0x1d1, 0x180142369 mov cs:byte_1801B2300, 0 ; +0x1d3, 0x18014236b mov ebx, [rsp+38h+arg_0] ; +0x1da, 0x180142372 and ebx, 0FFFFFFBFh ; +0x1de, 0x180142376 mov ecx, ebx ; +0x1e1, 0x180142379 call _set_fpsr ; +0x1e3, 0x18014237b mov esi, 100h ; +0x1e8, 0x180142380 mov r14d, 200h ; +0x1ed, 0x180142385 mov r15d, 6000h ; +0x1f3, 0x18014238b jmp short loc_18014239D ; +0x1f9, 0x180142391 and ebx, 0FFFFFFBFh ; +0x1fb, 0x180142393 mov ecx, ebx ; +0x1fe, 0x180142396 call _set_fpsr ; +0x200, 0x180142398 mov ecx, ebx ; +0x205, 0x18014239d shr ecx, 3 ; +0x207, 0x18014239f and ecx, 10h ; +0x20a, 0x1801423a2 mov eax, ebx ; +0x20d, 0x1801423a5 mov edx, ecx ; +0x20f, 0x1801423a7 or edx, 8 ; +0x211, 0x1801423a9 and eax, r14d ; +0x214, 0x1801423ac cmovz edx, ecx ; +0x217, 0x1801423af mov eax, ebx ; +0x21a, 0x1801423b2 mov ecx, edx ; +0x21c, 0x1801423b4 or ecx, 4 ; +0x21e, 0x1801423b6 and eax, 400h ; +0x221, 0x1801423b9 cmovz ecx, edx ; +0x226, 0x1801423be mov eax, ebx ; +0x229, 0x1801423c1 mov edx, ecx ; +0x22b, 0x1801423c3 or edx, 2 ; +0x22d, 0x1801423c5 and eax, 800h ; +0x230, 0x1801423c8 cmovz edx, ecx ; +0x235, 0x1801423cd mov eax, ebx ; +0x238, 0x1801423d0 mov ecx, edx ; +0x23a, 0x1801423d2 or ecx, 1 ; +0x23c, 0x1801423d4 and eax, 1000h ; +0x23f, 0x1801423d7 cmovz ecx, edx ; +0x244, 0x1801423dc mov eax, ebx ; +0x247, 0x1801423df mov edx, ecx ; +0x249, 0x1801423e1 bts edx, 13h ; +0x24b, 0x1801423e3 and eax, esi ; +0x24f, 0x1801423e7 cmovz edx, ecx ; +0x251, 0x1801423e9 mov eax, ebx ; +0x254, 0x1801423ec and eax, r15d ; +0x256, 0x1801423ee jz short loc_180142415 ; +0x259, 0x1801423f1 cmp eax, 2000h ; +0x25b, 0x1801423f3 jz short loc_180142413 ; +0x260, 0x1801423f8 cmp eax, 4000h ; +0x262, 0x1801423fa jz short loc_18014240E ; +0x267, 0x1801423ff cmp eax, r15d ; +0x269, 0x180142401 jnz short loc_180142415 ; +0x26c, 0x180142404 or edx, 300h ; +0x26e, 0x180142406 jmp short loc_180142415 ; +0x274, 0x18014240c or edx, r14d ; +0x276, 0x18014240e jmp short loc_180142415 ; +0x279, 0x180142411 or edx, esi ; +0x27b, 0x180142413 and ebx, 8040h ; +0x27d, 0x180142415 sub ebx, 40h ; '@' ; +0x283, 0x18014241b jz short loc_18014243B ; +0x286, 0x18014241e sub ebx, 7FC0h ; +0x288, 0x180142420 jz short loc_180142433 ; +0x28e, 0x180142426 cmp ebx, 40h ; '@' ; +0x290, 0x180142428 jnz short loc_18014243F ; +0x293, 0x18014242b bts edx, 18h ; +0x295, 0x18014242d jmp short loc_18014243F ; +0x299, 0x180142431 or edx, 3000000h ; +0x29b, 0x180142433 jmp short loc_18014243F ; +0x2a1, 0x180142439 bts edx, 19h ; +0x2a3, 0x18014243b mov eax, edx ; +0x2a7, 0x18014243f mov rbx, [rsp+38h+arg_8] ; +0x2a9, 0x180142441 mov rsi, [rsp+38h+arg_10] ; +0x2ae, 0x180142446 add rsp, 20h ; +0x2b3, 0x18014244b pop r15 ; +0x2b7, 0x18014244f pop r14 ; +0x2b9, 0x180142451 pop r12 ; +0x2bb, 0x180142453 retn ; +0x2bd, 0x180142455