Function at 0x5778d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x6b4192
mov eax, dword fs:[0]
push eax
sub esp, 0xd0
mov eax, dword [0x76f950]
xor eax, esp
mov dword [esp + 0xc8], eax
push ebx
push esi
push edi
mov eax, dword [0x76f950]
xor eax, esp
push eax
lea eax, [esp + 0xe0]
mov dword fs:[0], eax
mov dword [esp + 0x50], edx
mov ebx, ecx
mov dword [esp + 0x3c], ebx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ecx
test edx, edx
jne 0x57793a
mov ecx, 1
test eax, eax
cmove eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [0x789314]
mov edi, dword [0x789310]
test eax, eax
cmovne edi, eax
test edi, edi
jne 0x577952
xor esi, esi
jmp 0x57796d
cmp word [edi], 0
jne 0x57795c
xor esi, esi
jmp 0x57796d
call fcn.004df4c0
mov esi, eax
push 0xffffffffffffffff
push edi
mov ecx, esi
call fcn.0040bb30
mov dword [esp + 0x20], esi
mov dword [esp + 0xe8], 0
xor dl, dl
lea ecx, [esp + 0x20]
call fcn.004e14a0
mov dword [esp + 0xe8], 0xffffffff
test esi, esi
je 0x5779a8
mov eax, dword [esi]
test eax, eax
jne 0x5779a5
mov ecx, esi
call fcn.004df580
jmp 0x5779a8
dec eax
mov dword [esi], eax
lea eax, [esp + 0x1c]
push eax
mov ecx, ebx
call fcn.00575740
mov dword [esp + 0xe8], 1
mov ecx, dword [0x78911c]
mov edx, dword [0x789118]
test ecx, ecx
cmovne edx, ecx
push eax
lea ecx, [esp + 0x24]
call fcn.00452570
add esp, 4
mov byte [esp + 0xe8], 2
xor dl, dl
mov ecx, eax
call fcn.004e14a0
mov byte [esp + 0xe8], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x577a10
mov ecx, dword [eax]
test ecx, ecx
jne 0x577a0d
mov ecx, eax
call fcn.004df580
jmp 0x577a10
dec ecx
mov dword [eax], ecx
mov dword [esp + 0xe8], 0xffffffff
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x577a35
mov ecx, dword [eax]
test ecx, ecx
jne 0x577a32
mov ecx, eax
call fcn.004df580
jmp 0x577a35
dec ecx
mov dword [eax], ecx
mov edx, dword [esp + 0x50]
lea ecx, [esp + 0x1c]
call fcn.005775a0
mov dword [esp + 0xe8], 3
mov ecx, dword [0x789a5c]
mov edx, dword [0x789a58]
test ecx, ecx
cmovne edx, ecx
push eax
lea ecx, [esp + 0x24]
call fcn.00452570
add esp, 4
mov byte [esp + 0xe8], 4
xor dl, dl
mov ecx, eax
call fcn.004e14a0
mov byte [esp + 0xe8], 3
mov eax, dword [esp + 0x20]
test eax, eax
je 0x577a9e
mov ecx, dword [eax]
test ecx, ecx
jne 0x577a9b
mov ecx, eax
call fcn.004df580
jmp 0x577a9e
dec ecx
mov dword [eax], ecx
mov dword [esp + 0xe8], 0xffffffff
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x577ac3
mov ecx, dword [eax]
test ecx, ecx
jne 0x577ac0
mov ecx, eax
call fcn.004df580
jmp 0x577ac3
dec ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x44]
cmp eax, 1
jne 0x577b42
mov edi, str.inner
call fcn.004df4c0
mov esi, eax
push 0xffffffffffffffff
push edi
mov ecx, esi
call fcn.0040bb30
mov dword [esp + 0x20], esi
mov dword [esp + 0xe8], 5
mov eax, dword [0x7892fc]
mov edx, dword [0x7892f8]
test eax, eax
cmovne edx, eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x20]
call fcn.00452570
add esp, 4
mov byte [esp + 0xe8], 6
xor dl, dl
mov ecx, eax
call fcn.004e14a0
mov byte [esp + 0xe8], 5
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x577b6e
mov ecx, dword [eax]
test ecx, ecx
jne 0x577b6b
mov ecx, eax
call fcn.004df580
jmp 0x577b6e
cmp eax, 2
mov edi, str.outer
mov ecx, str.none
cmovne edi, ecx
test edi, edi
jne 0x577b5a
xor esi, esi
jmp 0x577ae2
cmp word [edi], 0
jne 0x577ad1
xor esi, esi
jmp 0x577ae2
dec ecx
mov dword [eax], ecx
mov dword [esp + 0xe8], 0xffffffff
test esi, esi
je 0x577b8f
mov eax, dword [esi]
test eax, eax
jne 0x577b8c
mov ecx, esi
call fcn.004df580
jmp 0x577b8f
dec eax
mov dword [esi], eax
call fcn.005720a0
mov dword [0x796c2c], eax
call fcn.00572150
push 0
mov dword [0x796c30], eax
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
push 0xc
push esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push esi
push 0
mov dword [0x796c34], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [ebx + 8]
mov ebx, dword [0x796c30]
test eax, eax
cmove eax, dword [0x796c34]
mov dword [esp + 0x20], eax
mov eax, dword [0x796c2c]
mov edi, eax
mov esi, ebx
test ebx, ebx
je 0x577bfb
mov eax, edi
cdq
idiv esi
mov ecx, esi
mov edi, ecx
mov esi, edx
test esi, esi
jne 0x577be7
mov eax, dword [0x796c2c]
cdq
idiv edi
mov ecx, 0x796c2c
mov dword [esp + 0x1c], eax
mov eax, ebx
cdq
idiv edi
mov ebx, eax
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x28], ebx
call fcn.00575740
mov dword [esp + 0xe8], 7
mov ecx, dword [0x789a74]
mov edx, dword [0x789a70]
test ecx, ecx
cmovne edx, ecx
push eax
lea ecx, [esp + 0x14]
call fcn.00452570
add esp, 4
mov byte [esp + 0xe8], 8
xor dl, dl
mov ecx, eax
call fcn.004e14a0
mov byte [esp + 0xe8], 7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x577c78
mov ecx, dword [eax]
test ecx, ecx
jne 0x577c75
mov ecx, eax
call fcn.004df580
jmp 0x577c78
dec ecx
mov dword [eax], ecx
mov dword [esp + 0xe8], 0xffffffff
mov eax, dword [esp + 0x18]
test eax, eax
je 0x577c9d
mov ecx, dword [eax]
test ecx, ecx
jne 0x577c9a
mov ecx, eax
call fcn.004df580
jmp 0x577c9d
dec ecx
mov dword [eax], ecx
mov eax, ebx
cdq
push edx
push eax
lea ecx, [esp + 0x94]
call fcn.004966e0
mov edi, eax
add esp, 8
test edi, edi
jne 0x577cbb
xor esi, esi
jmp 0x577cd6
cmp word [edi], 0
jne 0x577cc5
xor esi, esi
jmp 0x577cd6
call fcn.004df4c0
mov esi, eax
push 0xffffffffffffffff
push edi
mov ecx, esi
call fcn.0040bb30
mov dword [esp + 0x10], esi
mov dword [esp + 0xe8], 9
mov eax, dword [esp + 0x1c]
cdq
push edx
push eax
lea ecx, [esp + 0x94]
call fcn.004966e0
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x577d05
xor edi, edi
jmp 0x577d20
cmp word [ebx], 0
jne 0x577d0f
xor edi, edi
jmp 0x577d20
call fcn.004df4c0
mov edi, eax
push 0xffffffffffffffff
push ebx
mov ecx, edi
call fcn.0040bb30
mov dword [esp + 0x18], edi
mov byte [esp + 0xe8], 0xa
mov eax, dword [0x78932c]
mov edx, dword [0x789328]
test eax, eax
cmovne edx, eax
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x1c]
call fcn.004526d0
add esp, 8
mov byte [esp + 0xe8], 0xb
xor dl, dl
mov ecx, eax
call fcn.004e14a0
mov byte [esp + 0xe8], 0xa
mov eax, dword [esp + 0x14]
test eax, eax
je 0x577d85
mov ecx, dword [eax]
test ecx, ecx
jne 0x577d82
mov ecx, eax
call fcn.004df580
jmp 0x577d85
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 9
test edi, edi
je 0x577da3
mov eax, dword [edi]
test eax, eax
jne 0x577da0
mov ecx, edi
call fcn.004df580
jmp 0x577da3
dec eax
mov dword [edi], eax
mov dword [esp + 0xe8], 0xffffffff
test esi, esi
je 0x577dc4
mov eax, dword [esi]
test eax, eax
jne 0x577dc1
mov ecx, esi
call fcn.004df580
jmp 0x577dc4
dec eax
mov dword [esi], eax
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x28], 0
mov eax, dword [ecx]
mov dword [ecx + 4], eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0xe8], 0xc
lea ecx, [esp + 0x28]
call fcn.00577660
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
mov ecx, edi
sub ecx, esi
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
mov edx, edi
mov ecx, esi
call fcn.0057c140
add esp, 4
mov edx, edi
mov ecx, esi
call fcn.0057c270
push edi
push eax
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x34]
call fcn.0057bcd0
xor esi, esi
mov dword [esp + 0x34], esi
mov byte [esp + 0xe8], 0xd
mov eax, dword [0x7895f4]
mov ebx, dword [0x7895f0]
test eax, eax
cmovne ebx, eax
test ebx, ebx
jne 0x577e61
xor edi, edi
jmp 0x577e7c
cmp word [ebx], 0
jne 0x577e6b
xor edi, edi
jmp 0x577e7c
call fcn.004df4c0
mov edi, eax
push 0xffffffffffffffff
push ebx
mov ecx, edi
call fcn.0040bb30
mov dword [esp + 0x10], edi
mov byte [esp + 0xe8], 0xe
xor dl, dl
lea ecx, [esp + 0x10]
call fcn.004e14a0
mov byte [esp + 0xe8], 0xd
test edi, edi
je 0x577eb1
mov eax, dword [edi]
test eax, eax
jne 0x577eae
mov ecx, edi
call fcn.004df580
jmp 0x577eb1
dec eax
mov dword [edi], eax
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
cmp edi, ebx
je 0x5783ab
or eax, 0xffffffff
or ecx, eax
cmp eax, dword [edi]
jne 0x577fd2
cmp ecx, dword [edi + 4]
jne 0x577fd2
mov eax, dword [edi + 8]
cdq
push edx
push eax
lea ecx, [esp + 0x94]
call fcn.004966e0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x577efa
mov dword [esp + 0x14], eax
jmp 0x577f22
cmp word [eax], 0
jne 0x577f08
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x577f22
call fcn.004df4c0
push 0xffffffffffffffff
push dword [esp + 0x14]
mov ecx, eax
mov dword [esp + 0x1c], eax
call fcn.0040bb30
mov eax, dword [esp + 0x14]
mov dword [esp + 0x70], eax
mov byte [esp + 0xe8], 0x1a
lea eax, [esp + 0x70]
push eax
mov edx, 0x7055b0
lea ecx, [esp + 0x60]
call fcn.004dbbb0
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0xe8], 0x1b
cmp dword [eax], 0
je 0x577f90
test esi, esi
je 0x577f6f
cmp dword [esi], 0
je 0x577f6f
lea ecx, [esp + 0x34]
call fcn.004db0b0
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
test eax, eax
jne 0x577f79
xor edx, edx
jmp 0x577f83
mov edx, dword [eax + 4]
test edx, edx
jne 0x577f83
lea edx, [eax + 8]
mov ecx, esi
call fcn.004dfa30
mov esi, eax
mov dword [esp + 0x34], esi
mov byte [esp + 0xe8], 0x1a
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x577fc1
mov ecx, dword [eax]
test ecx, ecx
jne 0x577fbe
mov ecx, eax
call fcn.004df580
mov byte [esp + 0xe8], 0xd
mov ecx, dword [esp + 0x14]
jmp 0x578378
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0xd
mov ecx, dword [esp + 0x14]
jmp 0x578378
test esi, esi
je 0x577fe1
xor dl, dl
lea ecx, [esp + 0x34]
call fcn.004e14a0
mov ecx, dword [edi + 4]
mov eax, dword [edi]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
test ecx, ecx
je 0x578009
mov ebx, ecx
cdq
idiv ebx
mov ecx, ebx
mov eax, ecx
mov ebx, edx
test ebx, ebx
jne 0x577ff4
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x10], ecx
mov eax, dword [edi]
cdq
idiv dword [esp + 0x10]
lea ecx, [esp + 0x8c]
mov dword [esp + 0x40], eax
mov eax, dword [edi + 4]
cdq
idiv dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 8]
cdq
push edx
push eax
call fcn.004966e0
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x578043
mov dword [esp + 0x10], eax
jmp 0x57806b
cmp word [eax], 0
jne 0x578051
xor eax, eax
mov dword [esp + 0x10], eax
jmp 0x57806b
call fcn.004df4c0
push 0xffffffffffffffff
push dword [esp + 0x1c]
mov ecx, eax
mov dword [esp + 0x18], eax
call fcn.0040bb30
mov eax, dword [esp + 0x10]
mov dword [esp + 0x6c], eax
mov byte [esp + 0xe8], 0xf
mov eax, dword [esp + 0x14]
cdq
push edx
push eax
lea ecx, [esp + 0x94]
call fcn.004966e0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x57809b
mov dword [esp + 0x18], eax
jmp 0x5780c3
cmp word [eax], 0
jne 0x5780a9
xor eax, eax
mov dword [esp + 0x18], eax
jmp 0x5780c3
call fcn.004df4c0
push 0xffffffffffffffff
push dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 0x20], eax
call fcn.0040bb30
mov eax, dword [esp + 0x18]
mov dword [esp + 0x64], eax
mov byte [esp + 0xe8], 0x10
mov eax, dword [esp + 0x40]
cdq
push edx
push eax
lea ecx, [esp + 0x94]
call fcn.004966e0
add esp, 8
mov dword [esp + 0x40], eax
test eax, eax
jne 0x5780f3
mov dword [esp + 0x14], eax
jmp 0x57811b
cmp word [eax], 0
jne 0x578101
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x57811b
call fcn.004df4c0
push 0xffffffffffffffff
push dword [esp + 0x44]
mov ecx, eax
mov dword [esp + 0x1c], eax
call fcn.0040bb30
mov eax, dword [esp + 0x14]
mov dword [esp + 0x58], eax
mov byte [esp + 0xe8], 0x11
lea eax, [esp + 0x38]
push eax
mov ecx, edi
call fcn.005758a0
mov byte [esp + 0xe8], 0x12
push eax
mov edx, 0x7054b0
lea ecx, [esp + 0x50]
call fcn.004dbbb0
add esp, 4
mov byte [esp + 0xe8], 0x13
push 0x705590
lea ecx, [esp + 0x58]
push ecx
mov ecx, eax
call fcn.00406d10
mov byte [esp + 0xe8], 0x14
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x7c]
push ecx
mov ecx, eax
call fcn.00406be0
mov byte [esp + 0xe8], 0x15
push 0x70558c
lea ecx, [esp + 0x6c]
push ecx
mov ecx, eax
call fcn.00406d10
mov byte [esp + 0xe8], 0x16
lea ecx, [esp + 0x64]
push ecx
lea ecx, [esp + 0x80]
push ecx
mov ecx, eax
call fcn.00406be0
mov byte [esp + 0xe8], 0x17
push 0x7055b4
lea ecx, [esp + 0x64]
push ecx
mov ecx, eax
call fcn.00406d10
mov byte [esp + 0xe8], 0x18
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x78]
push ecx
mov ecx, eax
call fcn.00406be0
mov ecx, eax
mov dword [esp + 0x40], ecx
mov byte [esp + 0xe8], 0x19
mov ecx, dword [ecx]
test ecx, ecx
je 0x5781fc
inc dword [ecx]
test esi, esi
je 0x578212
mov eax, dword [esi]
test eax, eax
jne 0x57820f
mov ecx, esi
call fcn.004df580
jmp 0x578212
dec eax
mov dword [esi], eax
mov esi, dword [esp + 0x40]
mov esi, dword [esi]
mov dword [esp + 0x34], esi
mov byte [esp + 0xe8], 0x18
mov eax, dword [esp + 0x74]
test eax, eax
je 0x57823e
mov ecx, dword [eax]
test ecx, ecx
jne 0x57823b
mov ecx, eax
call fcn.004df580
jmp 0x57823e
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x17
mov eax, dword [esp + 0x60]
test eax, eax
je 0x578260
mov ecx, dword [eax]
test ecx, ecx
jne 0x57825d
mov ecx, eax
call fcn.004df580
jmp 0x578260
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x16
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x578282
mov ecx, dword [eax]
test ecx, ecx
jne 0x57827f
mov ecx, eax
call fcn.004df580
jmp 0x578282
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x15
mov eax, dword [esp + 0x68]
test eax, eax
je 0x5782a4
mov ecx, dword [eax]
test ecx, ecx
jne 0x5782a1
mov ecx, eax
call fcn.004df580
jmp 0x5782a4
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x14
mov eax, dword [esp + 0x78]
test eax, eax
je 0x5782c6
mov ecx, dword [eax]
test ecx, ecx
jne 0x5782c3
mov ecx, eax
call fcn.004df580
jmp 0x5782c6
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x13
mov eax, dword [esp + 0x54]
test eax, eax
je 0x5782e8
mov ecx, dword [eax]
test ecx, ecx
jne 0x5782e5
mov ecx, eax
call fcn.004df580
jmp 0x5782e8
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x12
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x57830a
mov ecx, dword [eax]
test ecx, ecx
jne 0x578307
mov ecx, eax
call fcn.004df580
jmp 0x57830a
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x11
mov eax, dword [esp + 0x38]
test eax, eax
je 0x57832c
mov ecx, dword [eax]
test ecx, ecx
jne 0x578329
mov ecx, eax
call fcn.004df580
jmp 0x57832c
dec ecx
mov dword [eax], ecx
mov byte [esp + 0xe8], 0x10
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x57834c
mov eax, dword [ecx]
test eax, eax
jne 0x578349
call fcn.004df580
jmp 0x57834c
dec eax
mov dword [ecx], eax
mov byte [esp + 0xe8], 0xf
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x57836c
mov eax, dword [ecx]
test eax, eax
jne 0x578369
call fcn.004df580
jmp 0x57836c
dec eax
mov dword [ecx], eax
mov byte [esp + 0xe8], 0xd
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x57838c
mov eax, dword [ecx]
test eax, eax
jne 0x578389
call fcn.004df580
jmp 0x57838c
dec eax
mov dword [ecx], eax
mov eax, dword [edi]
mov ecx, dword [edi + 4]
add edi, 0xc
cmp edi, ebx
jne 0x577ec6
test esi, esi
je 0x5783ab
xor dl, dl
lea ecx, [esp + 0x34]
call fcn.004e14a0
mov byte [esp + 0xe8], 0xc
test esi, esi
je 0x5783c9
mov eax, dword [esi]
test eax, eax
jne 0x5783c6
mov ecx, esi
call fcn.004df580
jmp 0x5783c9
dec eax
mov dword [esi], eax
mov eax, dword [esp + 0x50]
cmp eax, 3
je 0x5784fc
cmp eax, 4
je 0x5784fc
mov edi, dword [esp + 0x28]
cmp eax, 2
je 0x578492
cmp edi, ebx
je 0x578492
lea edx, [edi + 0xc]
mov dword [esp + 0x10], edx
jmp 0x578400
mov eax, dword [edx - 8]
mov ecx, dword [edx - 0xc]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x4c], eax
mov edi, ecx
mov esi, eax
test eax, eax
je 0x578429
mov eax, edi
cdq
idiv esi
mov ecx, esi
mov edi, ecx
mov esi, edx
test esi, esi
jne 0x578416
mov ecx, dword [esp + 0x38]
mov eax, ecx
cdq
idiv edi
mov ecx, eax
mov eax, dword [esp + 0x4c]
cdq
idiv edi
cmp ecx, dword [esp + 0x1c]
jne 0x578450
cmp eax, dword [esp + 0x24]
jne 0x578450
mov edx, dword [esp + 0x10]
add edx, 0xc
mov dword [esp + 0x10], edx
jmp 0x578483
mov edx, dword [esp + 0x10]
mov ecx, edx
cmp edx, ebx
je 0x57847c
add edx, 0xfffffff4
lea ecx, [ecx]
movq xmm0, qword [ecx]
movq qword [edx], xmm0
mov eax, dword [ecx + 8]
add ecx, 0xc
mov dword [edx + 8], eax
lea edx, [edx + 0xc]
cmp ecx, ebx
jne 0x578460
mov edx, dword [esp + 0x10]
sub ebx, 0xc
mov dword [esp + 0x2c], ebx
lea eax, [edx - 0xc]
cmp eax, ebx
jne 0x578400
mov edi, dword [esp + 0x28]
cmp dword [esp + 0x44], 0
jne 0x57855a
cmp edi, ebx
je 0x5785fb
mov ecx, dword [esp + 0x3c]
lea esi, [edi + 0xc]
lea esp, [esp]
mov eax, dword [esi - 0xc]
cmp eax, dword [ecx]
jl 0x5784c4
mov eax, dword [esi - 8]
cmp eax, dword [ecx + 4]
jl 0x5784c4
add esi, 0xc
jmp 0x5784f3
mov ecx, esi
cmp esi, ebx
je 0x5784e8
lea edx, [esi - 0xc]
lea ecx, [ecx]
movq xmm0, qword [ecx]
movq qword [edx], xmm0
mov eax, dword [ecx + 8]
add ecx, 0xc
mov dword [edx + 8], eax
lea edx, [edx + 0xc]
cmp ecx, ebx
jne 0x5784d0
mov ecx, dword [esp + 0x3c]
sub ebx, 0xc
mov dword [esp + 0x2c], ebx
lea eax, [esi - 0xc]
cmp eax, ebx
jne 0x5784b0
jmp 0x57855a
mov edi, dword [esp + 0x28]
cmp edi, ebx
je 0x5785fb
lea esi, [edi + 0xc]
jmp 0x578510
mov eax, dword [esi - 0xc]
cmp eax, dword [0x796c2c]
jne 0x57852b
mov eax, dword [esi - 8]
cmp eax, dword [0x796c30]
jne 0x57852b
add esi, 0xc
jmp 0x578553
mov ecx, esi
cmp esi, ebx
je 0x57854c
lea edx, [esi - 0xc]
movq xmm0, qword [ecx]
movq qword [edx], xmm0
mov eax, dword [ecx + 8]
add ecx, 0xc
mov dword [edx + 8], eax
lea edx, [edx + 0xc]
cmp ecx, ebx
jne 0x578534
sub ebx, 0xc
mov dword [esp + 0x2c], ebx
lea eax, [esi - 0xc]
cmp eax, ebx
jne 0x578510
cmp edi, ebx
je 0x5785fb
lea esi, [edi + 0xc]
mov eax, dword [esi - 0xc]
cmp eax, dword [0x796c2c]
jg 0x578580
mov eax, dword [esi - 8]
cmp eax, dword [0x796c30]
jg 0x578580
add esi, 0xc
jmp 0x5785af
mov ecx, esi
cmp esi, ebx
je 0x5785a8
lea edx, [esi - 0xc]
lea esp, [esp]
movq xmm0, qword [ecx]
movq qword [edx], xmm0
mov eax, dword [ecx + 8]
add ecx, 0xc
mov dword [edx + 8], eax
lea edx, [edx + 0xc]
cmp ecx, ebx
jne 0x578590
sub ebx, 0xc
mov dword [esp + 0x2c], ebx
lea eax, [esi - 0xc]
cmp eax, ebx
jne 0x578565
cmp edi, ebx
je 0x5785fb
lea esi, [edi + 0xc]
lea ecx, [ecx]
cmp dword [esi - 4], 0x10
jge 0x5785f1
mov ecx, esi
cmp esi, ebx
je 0x5785e8
lea edx, [esi - 0xc]
nop
movq xmm0, qword [ecx]
movq qword [edx], xmm0
mov eax, dword [ecx + 8]
add ecx, 0xc
mov dword [edx + 8], eax
lea edx, [edx + 0xc]
cmp ecx, ebx
jne 0x5785d0
sub ebx, 0xc
mov dword [esp + 0x2c], ebx
jmp 0x5785f4
add esi, 0xc
lea ecx, [esi - 0xc]
cmp ecx, ebx
jne 0x5785c0
mov ecx, ebx
sub ecx, edi
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x5786ba
mov eax, dword [0x78987c]
mov edi, dword [0x789878]
test eax, eax
cmovne edi, eax
test edi, edi
jne 0x57862d
xor esi, esi
jmp 0x578648
cmp word [edi], 0
jne 0x578637
xor esi, esi
jmp 0x578648
call fcn.004df4c0
mov esi, eax
push 0xffffffffffffffff
push edi
mov ecx, esi
call fcn.0040bb30
mov dword [esp + 0x24], esi
mov byte [esp + 0xe8], 0x1c
mov dl, 1
lea ecx, [esp + 0x24]
call fcn.004e14a0
mov byte [esp + 0xe8], 0xc
test esi, esi
je 0x57867d
mov eax, dword [esi]
test eax, eax
jne 0x57867a
mov ecx, esi
call fcn.004df580
jmp 0x57867d
dec eax
mov dword [esi], eax
mov eax, dword [0x796c2c]
mov dword [esp + 0x80], eax
mov eax, dword [0x796c30]
mov dword [esp + 0x84], eax
mov eax, dword [0x796c34]
mov dword [esp + 0x88], eax
lea eax, [esp + 0x80]
push eax
lea ecx, [esp + 0x2c]
call fcn.0057bc00
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov esi, edi
cmp edi, ebx
je 0x578884
cmp dword [esp + 0x44], 0
mov eax, dword [esi + 4]
mov edi, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp + 0x8c], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], ecx
je 0x57877c
mov edx, dword [esp + 0x3c]
movd xmm1, edi
mov ecx, dword [edx]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
cvtdq2pd xmm1, xmm1
movd xmm2, eax
divsd xmm1, xmm0
movd xmm0, dword [edx + 4]
cvtdq2pd xmm2, xmm2
cvtdq2pd xmm0, xmm0
xor edx, edx
cmp dword [esp + 0x44], 1
mov dword [esp + 0x18], ecx
divsd xmm2, xmm0
jne 0x578732
comisd xmm2, xmm1
jmp 0x578736
comisd xmm1, xmm2
seta dl
test edx, edx
je 0x578741
mov eax, edi
jmp 0x57874c
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x18], ecx
movd xmm1, eax
movd xmm0, ecx
cvtdq2pd xmm1, xmm1
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x10], eax
divsd xmm1, xmm0
comisd xmm1, xmmword [0x72e118]
jbe 0x57878b
movsd xmm0, qword [0x72e120]
comisd xmm0, xmm1
jbe 0x57878b
mov eax, 1
mov ecx, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
mov edi, ecx
test ecx, ecx
je 0x5787a6
cdq
idiv edi
mov ecx, edi
mov eax, ecx
mov edi, edx
test edi, edi
jne 0x578795
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x10]
cdq
idiv dword [esp + 0x1c]
mov edi, eax
mov eax, dword [esp + 0x18]
cdq
idiv dword [esp + 0x1c]
mov dword [esp + 0x98], edi
mov ecx, eax
mov eax, dword [esp + 0x20]
sub eax, dword [esi + 8]
mov dword [esp + 0x9c], ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0xa4], eax
cmp dword [esi + 8], edx
jge 0x5787f2
add eax, 0x3e8
mov dword [esp + 0xa4], eax
mov edx, dword [esi]
xor eax, eax
cmp edi, ecx
setl al
cmp dword [esp + 0x50], 0
mov dword [esp + 0xa0], eax
jne 0x57883e
xor ecx, ecx
cmp edx, dword [0x796c2c]
jne 0x57881f
mov eax, dword [esp + 0x14]
cmp eax, dword [0x796c30]
je 0x578824
mov ecx, 1
cmp edi, 1
jne 0x578832
cmp dword [esp + 0x9c], edi
je 0x578835
add ecx, 2
mov dword [esp + 0xa8], ecx
jmp 0x578849
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0x14]
imul eax, edx
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx + 4]
imul ecx, dword [edx]
sub eax, ecx
mov ecx, dword [esp + 0x48]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0xac], eax
lea eax, [esp + 0x8c]
push eax
call fcn.0057bd30
add esi, 0xc
cmp esi, ebx
jne 0x5786c4
mov ebx, dword [esp + 0x48]
mov eax, 0x38e38e39
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
sub edx, ecx
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebx + 4]
push eax
call fcn.0057c2f0
mov eax, dword [0x789008]
mov esi, dword [0x789004]
add esp, 4
test eax, eax
cmovne esi, eax
test esi, esi
jne 0x5788c4
xor edi, edi
jmp 0x5788df
cmp word [esi], 0
jne 0x5788ce
xor edi, edi
jmp 0x5788df
call fcn.004df4c0
mov edi, eax
push 0xffffffffffffffff
push esi
mov ecx, edi
call fcn.0040bb30
mov dword [esp + 0x24], edi
mov byte [esp + 0xe8], 0x1d
xor dl, dl
lea ecx, [esp + 0x24]
call fcn.004e14a0
mov byte [esp + 0xe8], 0xc
test edi, edi
je 0x578978
mov eax, dword [edi]
test eax, eax
jne 0x578975
mov esi, dword [0x77ae88]
push esi
mov dword [esp + 0x28], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0xe8], 0x1e
mov eax, dword [edi + 4]
test eax, eax
je 0x578934
add eax, 0xfffffffc
push eax
call fcn.00634402
add esp, 4
mov ecx, dword [0x77ae80]
mov eax, dword [0x77ae90]
dec dword [0x77ae94]
mov dword [edi + 0x38], 0
mov dword [eax + ecx*4], edi
inc ecx
mov dword [0x77ae80], ecx
mov byte [esp + 0xe8], 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [0x77ae94], 0
jne 0x578978
call fcn.004df050
jmp 0x578978
dec eax
mov dword [edi], eax
mov esi, dword [ebx]
cmp esi, dword [ebx + 4]
je 0x578ad6
lea eax, [esp + 0x38]
push eax
mov ecx, esi
call fcn.005759c0
mov byte [esp + 0xe8], 0x1f
push eax
mov edx, 0x705558
lea ecx, [esp + 0x28]
call fcn.004dbbb0
add esp, 4
mov byte [esp + 0xe8], 0x20
xor dl, dl
mov ecx, eax
call fcn.004e14a0
mov byte [esp + 0xe8], 0x1f
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x578a40
mov eax, dword [ebx]
test eax, eax
jne 0x578a3d
mov edi, dword [0x77ae88]
push edi
mov dword [esp + 0x50], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0xe8], 0x21
mov eax, dword [ebx + 4]
test eax, eax
je 0x5789fc
add eax, 0xfffffffc
push eax
call fcn.00634402
add esp, 4
mov ecx, dword [0x77ae80]
mov eax, dword [0x77ae90]
dec dword [0x77ae94]
mov dword [ebx + 0x38], 0
mov dword [eax + ecx*4], ebx
inc ecx
mov dword [0x77ae80], ecx
mov byte [esp + 0xe8], 0x1f
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [0x77ae94], 0
jne 0x578a40
call fcn.004df050
jmp 0x578a40
dec eax
mov dword [ebx], eax
mov byte [esp + 0xe8], 0xc
mov ebx, dword [esp + 0x38]
test ebx, ebx
je 0x578ac6
mov eax, dword [ebx]
test eax, eax
jne 0x578ac3
mov edi, dword [0x77ae88]
push edi
mov dword [esp + 0x58], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0xe8], 0x22
mov eax, dword [ebx + 4]
test eax, eax
je 0x578a82
add eax, 0xfffffffc
push eax
call fcn.00634402
add esp, 4
mov ecx, dword [0x77ae80]
mov eax, dword [0x77ae90]
dec dword [0x77ae94]
mov dword [ebx + 0x38], 0
mov dword [eax + ecx*4], ebx
inc ecx
mov dword [0x77ae80], ecx
mov byte [esp + 0xe8], 0xc
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [0x77ae94], 0
jne 0x578ac6
call fcn.004df050
jmp 0x578ac6
dec eax
mov dword [ebx], eax
mov eax, dword [esp + 0x48]
add esi, 0x24
cmp esi, dword [eax + 4]
jne 0x578983
mov dword [esp + 0xe8], 0xffffffff
mov eax, dword [esp + 0x28]
test eax, eax
je 0x578b0a
push eax
call fcn.00633f98
add esp, 4
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov ecx, dword [esp + 0xe0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc8]
xor ecx, esp
call fcn.00633732
mov esp, ebp
pop ebp
ret