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

Disassembly:
push 0xffffffffffffffff
push 0x87e920
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push ebp
push esi
push edi
mov eax, dword [0x8ce6f4]
xor eax, esp
push eax
lea eax, [esp + 0x4c]
mov dword fs:[0], eax
mov esi, ecx
push 0
lea ecx, [esp + 0x2c]
mov dword [esp + 0x58], 0
call fcn.0065c0b0
mov eax, dword [esp + 0x5c]
push 0
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x5c], 1
call fcn.0065c1f0
test al, al
jne 0x6565a1
lea ecx, [esp + 0x28]
mov byte [esp + 0x54], al
call fcn.007e4df4
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov dword [esp + 0x54], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x65659a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x656f31
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x6565bb
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push 7
lea ecx, [esp + 0x1c]
push 0x444238
push ecx
mov byte [esp + 0x60], 2
call fcn.004aa600
mov edx, dword [esp + 0x24]
add esp, 0xc
push edx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x44422c
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x4441b0
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x444150
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x44422c
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x444110
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x44422c
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x4440fc
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x4440c4
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x444094
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x444038
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443fe8
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x44422c
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443f48
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x44422c
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443eb8
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443e50
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x402308
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x402308
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443e34
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443e04
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
push eax
push ecx
lea edx, [esp + 0x20]
push 0x443de8
push edx
call fcn.004aa600
mov eax, dword [esp + 0x28]
add esp, 0x10
push eax
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443d50
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 0x20]
push ecx
push edx
lea eax, [esp + 0x20]
push 0x443d30
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x28]
add esp, 0x10
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443c70
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov edx, dword [esi + 0x34]
mov eax, dword [esi + 0x30]
push edx
push eax
lea ecx, [esp + 0x20]
push 0x443c48
push ecx
call fcn.004aa600
mov edx, dword [esp + 0x28]
add esp, 0x10
push edx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443c24
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov eax, dword [esi + 0x38]
push eax
lea ecx, [esp + 0x1c]
push 0x443c08
push ecx
call fcn.004aa600
mov edx, dword [esp + 0x24]
add esp, 0xc
push edx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443b88
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov eax, dword [esi + 0x3c]
test eax, eax
jne 0x6567ec
mov eax, 0x443b80
jmp 0x6567fb
cmp eax, 1
mov eax, 0x443b78
je 0x6567fb
mov eax, 0x443b70
push eax
lea eax, [esp + 0x1c]
push 0x443b54
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x24]
add esp, 0xc
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443b34
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov edx, dword [esi + 0x44]
mov eax, dword [esi + 0x40]
push edx
push eax
lea ecx, [esp + 0x20]
push 0x443b08
push ecx
call fcn.004aa600
mov edx, dword [esp + 0x28]
add esp, 0x10
push edx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443a98
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov eax, dword [esi + 0x50]
test eax, eax
jne 0x65686e
mov edx, 0x443a90
jmp 0x656889
cmp eax, 1
jne 0x65687a
mov edx, 0x443a80
jmp 0x656889
mov edx, 0x443a70
cmp eax, 2
je 0x656889
mov edx, 0x402a88
mov eax, dword [esi + 0x4c]
test eax, eax
jne 0x656897
mov eax, 0x443a64
jmp 0x6568b2
cmp eax, 1
jne 0x6568a3
mov eax, 0x443a80
jmp 0x6568b2
cmp eax, 2
mov eax, 0x443a58
je 0x6568b2
mov eax, 0x402a88
cmp byte [esi + 0x48], 0
mov ecx, 0x443a4c
jne 0x6568c2
mov ecx, 0x443a3c
push edx
push eax
push ecx
lea eax, [esp + 0x24]
push 0x443a18
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x2c]
add esp, 0x14
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443988
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443900
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov edx, dword [esi + 0x54]
push edx
lea eax, [esp + 0x1c]
push 0x4438dc
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x24]
add esp, 0xc
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x443860
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
cmp byte [esi + 0x58], 0
mov eax, 0x443b78
jne 0x656943
mov eax, 0x443b80
push eax
lea edx, [esp + 0x1c]
push 0x443838
push edx
call fcn.004aa600
mov eax, dword [esp + 0x24]
add esp, 0xc
push eax
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x4437f0
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov ecx, dword [esi + 0x9c]
mov edx, dword [esi + 0x98]
mov eax, dword [esi + 0x94]
and ecx, 0xffffff
push ecx
mov ecx, dword [esi + 0x90]
and edx, 0xffffff
push edx
mov edx, dword [esi + 0x8c]
and eax, 0xffffff
push eax
mov eax, dword [esi + 0x88]
and ecx, 0xffffff
push ecx
mov ecx, dword [esi + 0x84]
and edx, 0xffffff
push edx
mov edx, dword [esi + 0x80]
and eax, 0xffffff
push eax
mov eax, dword [esi + 0x7c]
and ecx, 0xffffff
push ecx
mov ecx, dword [esi + 0x78]
and edx, 0xffffff
push edx
mov edx, dword [esi + 0x74]
and eax, 0xffffff
push eax
mov eax, dword [esi + 0x70]
and ecx, 0xffffff
push ecx
mov ecx, dword [esi + 0x6c]
and edx, 0xffffff
push edx
mov edx, dword [esi + 0x68]
and eax, 0xffffff
push eax
mov eax, dword [esi + 0x64]
and ecx, 0xffffff
push ecx
mov ecx, dword [esi + 0x60]
and edx, 0xffffff
push edx
and eax, 0xffffff
push eax
and ecx, 0xffffff
push ecx
lea edx, [esp + 0x58]
push 0x443718
push edx
call fcn.004aa600
mov eax, dword [esp + 0x60]
add esp, 0x48
push eax
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov eax, dword [esi + 0x5c]
mov edi, eax
shr edi, 1
mov ecx, eax
and ecx, 1
and edi, 1
shl ecx, 4
add edi, ecx
mov edx, eax
shl edi, 4
shr edx, 2
and edx, 1
add edi, edx
shr eax, 3
and eax, 1
shl edi, 4
push 0x4436b0
lea ecx, [esp + 0x2c]
add edi, eax
call fcn.0065c9c0
cmp byte [esi + 0x59], 0
mov eax, 0x443b78
jne 0x656a8f
mov eax, 0x443b80
mov ecx, dword [esi + 0xac]
mov edx, dword [esi + 0xa8]
and ecx, 0xffffff
push ecx
mov ecx, dword [esi + 0xa4]
and edx, 0xffffff
push edx
mov edx, dword [esi + 0xa0]
and ecx, 0xffffff
push ecx
and edx, 0xffffff
push edx
push edi
push eax
lea eax, [esp + 0x30]
push 0x443628
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x38]
add esp, 0x20
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x4435f4
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov edx, dword [esi + 0x140]
push edx
lea eax, [esp + 0x1c]
push 0x4435d8
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x24]
add esp, 0xc
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov ebx, dword [esp + 0x60]
test ebx, ebx
je 0x656bc0
mov ebp, 0x40d72c
js 0x656b32
mov ebp, 0x402a88
mov eax, 0x10624dd3
imul ebx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
mov edx, ecx
imul edx, edx, 0x3e8
mov eax, ebx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cdq
mov ecx, 0x3c
idiv ecx
mov eax, edi
push edx
cdq
xor eax, edx
sub eax, edx
cdq
idiv ecx
mov eax, 0x88888889
push edx
imul edi
add edx, edi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
xor eax, edx
sub eax, edx
cdq
idiv ecx
push edx
push ebp
lea edx, [esp + 0x2c]
push 0x443598
push edx
call fcn.004aa600
mov eax, dword [esp + 0x34]
add esp, 0x1c
push eax
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
xor ebp, ebp
mov dword [esp + 0x20], ebp
lea edi, [esi + 0x150]
lea esp, [esp]
cmp dword [edi + 4], 0
jne 0x656be0
cmp dword [edi - 0xc], 0
je 0x656ec3
mov ecx, dword [edi - 8]
push ecx
lea edx, [esp + 0x1c]
push 0x44358c
push edx
call fcn.004aa600
mov eax, dword [esp + 0x24]
add esp, 0xc
push eax
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
cmp dword [edi - 0xc], 0
jne 0x656c11
mov dword [edi - 0xc], 0x2d2d
mov eax, dword [edi - 0xc]
mov ecx, eax
push ebp
and ecx, 0xff
push ecx
sar eax, 8
push eax
lea edx, [esp + 0x24]
push 0x443560
push edx
call fcn.004aa600
mov eax, dword [esp + 0x2c]
add esp, 0x14
push eax
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
push 0x5e
push 0x4434a0
lea ecx, [esp + 0x20]
call fcn.004a8db0
mov ecx, dword [esp + 0x18]
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov edx, dword [edi - 4]
push edx
lea eax, [esp + 0x1c]
push 0x44348c
push eax
call fcn.004aa600
mov eax, dword [edi - 4]
xor ecx, ecx
add esp, 0xc
test eax, eax
setne cl
test ecx, ecx
je 0x6565b1
mov ecx, dword [edi - 8]
jmp 0x656c90
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x656cb6
test dx, dx
je 0x656cb2
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x656cb6
add ecx, 4
add eax, 4
test dx, dx
jne 0x656c90
xor eax, eax
jmp 0x656cbb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x656d0f
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push 0x443484
push edx
call fcn.004b1a10
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x58], 3
call fcn.004aa540
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x54], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x656d0f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
xor ebx, ebx
mov byte [esp + 0x60], 0xff
mov byte [esp + 0x17], 0xff
cmp dword [edi + 4], ebx
jbe 0x656eb5
xor ebp, ebp
mov dword [esp + 0x1c], ebp
cmp ebx, dword [edi + 4]
jae 0x656f47
mov esi, dword [edi]
add esi, ebp
cmp byte [esi + 0x28], 0
je 0x656ea0
mov al, byte [esp + 0x60]
cmp byte [esi + 0x19], al
jne 0x656d61
mov cl, byte [esp + 0x17]
cmp byte [esi + 0x1a], cl
je 0x656db0
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
movsx ecx, byte [esi + 0x1a]
push edx
movsx edx, byte [esi + 0x19]
push eax
push ecx
push edx
lea eax, [esp + 0x28]
push 0x443440
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x30]
add esp, 0x18
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
cmp ebx, dword [edi + 4]
jae 0x656f47
mov esi, dword [edi]
mov al, byte [esi + ebp + 0x19]
mov cl, byte [esi + ebp + 0x1a]
add esi, ebp
mov byte [esp + 0x60], al
mov byte [esp + 0x17], cl
cmp dword [esi + 0xc], 0
jg 0x656dc5
jl 0x656dbe
cmp dword [esi + 8], 0
jae 0x656dc5
mov ebp, 0x40d72c
jmp 0x656dca
mov ebp, 0x402a88
mov edx, dword [esi + 4]
mov eax, dword [esi]
mov ecx, dword [esi + 0xc]
push edx
mov edx, dword [esi + 8]
push eax
push 0
push 0x3e8
push ecx
push edx
call fcn.00809f10
mov ecx, dword [esi + 8]
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, dword [esi + 0xc]
push 0
push 0x3e8
push eax
push ecx
call fcn.00803a40
push 0
push 0x3c
push edx
push eax
call fcn.00809f10
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esi + 0xc]
push eax
mov eax, dword [esi + 8]
push 0
push 0x3e8
push edx
push eax
call fcn.00803a40
push 0
push 0x3c
push edx
push eax
call fcn.00803a40
push 0
push 0x3c
push edx
push eax
call fcn.00809f10
mov ecx, dword [esi + 0xc]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esi + 8]
push eax
push 0
push 0x3e8
push ecx
push edx
call fcn.00803a40
push 0
push 0x3c
push edx
push eax
call fcn.00803a40
push 0
push 0x3c
push edx
push eax
call fcn.00803a40
push 0
push 0x3c
push edx
push eax
call fcn.00809f10
cdq
xor eax, edx
sub eax, edx
push eax
push ebp
push 0x4433d8
lea eax, [esp + 0x38]
push eax
call fcn.004aa600
mov ecx, dword [esp + 0x3c]
add esp, 0x24
push ecx
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
mov ebp, dword [esp + 0x1c]
inc ebx
add ebp, 0x30
mov dword [esp + 0x1c], ebp
cmp ebx, dword [edi + 4]
jb 0x656d41
mov ebp, dword [esp + 0x20]
push 0x402308
lea ecx, [esp + 0x2c]
call fcn.0065c9c0
inc ebp
add edi, 0x1c
mov dword [esp + 0x20], ebp
cmp ebp, 0x20
jb 0x656bd0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x54], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x656ef9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x54], 0
call fcn.007e4df4
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov dword [esp + 0x54], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x656f2f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov al, 1
mov ecx, dword [esp + 0x4c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret 8
push 0x80070057
call fcn.004a8210
int3