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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x487773
mov eax, dword fs:[0]
push eax
sub esp, 0x290
mov eax, dword [0x4a5584]
xor eax, esp
mov dword [esp + 0x288], eax
push ebx
push esi
push edi
mov eax, dword [0x4a5584]
xor eax, esp
push eax
lea eax, [esp + 0x2a0]
mov dword fs:[0], eax
mov esi, edx
mov edi, ecx
mov dword [esp + 0x54], esi
call fcn.00403ae0
mov eax, dword [edi]
xor ebx, ebx
cmp dword [eax - 0xc], ebx
mov dword [esp + 0x50], ebx
jl 0x4213ae
push 0x49a060
push eax
call fcn.00452c13
add esp, 8
cmp eax, ebx
je 0x4213ae
sub eax, dword [edi]
sar eax, 1
cmp eax, 0xffffffff
je 0x4213ae
lea ecx, [eax + 1]
lea esi, [esp + 0x28]
mov edx, edi
call fcn.004036b0
mov dword [esp + 0x2a8], ebx
mov eax, dword [esp + 0x28]
cmp dword [eax - 0xc], ebx
jne 0x420a7f
add eax, 0xfffffff0
mov dword [esp + 0x2a8], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x4213a2
push 4
call fcn.00453535
add esp, 4
cmp eax, ebx
je 0x420a95
lea ecx, [esp + 0x2c]
mov dword [eax], ecx
jmp 0x420a97
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
lea edx, [esp + 0x18]
push edx
mov ecx, 0x4987ec
mov byte [esp + 0x2ac], 2
call fcn.004030f0
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x30]
push edx
mov byte [esp + 0x2b4], 3
call fcn.0040ccd0
mov byte [esp + 0x2b4], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420b05
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x58]
push ecx
call fcn.004216d0
mov byte [esp + 0x2a8], 4
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x38]
mov dword [esp + 0x1c], ebx
sar eax, 2
cmp ebx, eax
jae 0x420cfa
mov edx, dword [esp + 0x38]
mov esi, dword [edx + ebx*4]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
sub esi, 0x10
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x420b5c
cmp eax, dword [esi]
jne 0x420b5c
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x420b97
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x420d6a
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00452fe1
add esp, 0x10
add edi, 0x10
mov dword [esp + 0x14], edi
mov byte [esp + 0x2a8], 5
cmp dword [edi - 0xc], 0
jl 0x420cbc
push 0x49804c
push edi
call fcn.00452c13
add esp, 8
test eax, eax
je 0x420cbc
sub eax, edi
sar eax, 1
mov esi, eax
cmp esi, 0xffffffff
je 0x420cbc
lea ecx, [esp + 0x18]
lea edx, [esp + 0x14]
call fcn.00403780
lea ecx, [esi + 1]
lea esi, [esp + 0x48]
lea edx, [esp + 0x14]
mov byte [esp + 0x2a8], 6
call fcn.004036b0
lea ebx, [esp + 0x18]
lea edi, [esp + 0x58]
mov byte [esp + 0x2a8], 7
call fcn.00421540
mov ecx, dword [esp + 0x48]
mov esi, dword [eax]
lea edi, [ecx - 0x10]
sub esi, 0x10
mov dword [esp + 0x44], eax
cmp edi, esi
je 0x420c6b
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x420c62
mov edx, dword [edi]
cmp edx, dword [esi]
jne 0x420c62
mov eax, edi
call fcn.00404890
mov dword [esp + 0x4c], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x420c53
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x420c6b
mov ebx, dword [ecx - 0xc]
push ecx
call fcn.00404790
mov byte [esp + 0x2a8], 6
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x420c8c
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov byte [esp + 0x2a8], 5
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420cb4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
lea eax, [edi - 0x10]
mov byte [esp + 0x2a8], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420ce0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x38]
inc ebx
sar eax, 2
mov dword [esp + 0x1c], ebx
cmp ebx, eax
jb 0x420b2e
xor ebx, ebx
cmp dword [esp + 0x74], ebx
jne 0x420d6f
lea esi, [esp + 0x58]
mov byte [esp + 0x2a8], 8
call fcn.00421970
mov ecx, dword [esp + 0x58]
push ecx
call fcn.00451a72
mov byte [esp + 0x2ac], 0
mov esi, dword [esp + 0x3c]
add esp, 4
cmp esi, ebx
je 0x42136a
mov eax, dword [esp + 0x3c]
mov edi, eax
cmp esi, eax
je 0x421361
mov eax, dword [esi]
sub eax, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x420d5e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 4
cmp esi, edi
jne 0x420d40
jmp 0x42135d
call fcn.00404830
mov edx, dword [0x4a8404]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a8404
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x2a8], 9
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x70]
test esi, esi
je 0x420db2
cmp esi, dword [esp + 0x58]
je 0x420db7
call fcn.00452c03
mov edi, dword [esp + 0x24]
cmp edi, ebx
je 0x42114e
test esi, esi
jne 0x420e02
call fcn.00452c03
xor eax, eax
cmp edi, dword [eax + 0x18]
jne 0x420dd8
call fcn.00452c03
mov esi, dword [edi + 0xc]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x420e06
cmp eax, dword [esi]
jne 0x420e06
mov ebx, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x420e41
mov eax, dword [esi]
jmp 0x420dce
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x420d6a
mov eax, dword [esi + 4]
mov dword [ebx + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [ebx + 0x10]
push eax
call fcn.00452fe1
add esp, 0x10
add ebx, 0x10
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x2a8], 0xa
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x420e93
call fcn.00452c03
xor eax, eax
cmp edi, dword [eax + 0x18]
jne 0x420e69
call fcn.00452c03
mov esi, dword [edi + 0x10]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x420e97
cmp eax, dword [esi]
jne 0x420e97
mov ebx, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x420ed2
mov eax, dword [eax]
jmp 0x420e5f
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x420d6a
mov eax, dword [esi + 4]
mov dword [ebx + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [ebx + 0x10]
push eax
call fcn.00452fe1
add esp, 0x10
add ebx, 0x10
mov dword [esp + 0x78], ebx
mov byte [esp + 0x2a8], 0xb
mov ecx, dword [ebx - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
lea edi, [ebx - 0x10]
call eax
cmp dword [edi + 0xc], 0
lea ecx, [edi + 0xc]
jl 0x420f08
cmp eax, dword [edi]
jne 0x420f08
mov esi, edi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x420f43
mov ecx, dword [edi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov esi, eax
test esi, esi
je 0x420d6a
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov eax, dword [edi + 4]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [edi + 0x10]
push edx
lea eax, [eax + eax + 2]
push eax
lea ecx, [esi + 0x10]
push ecx
call fcn.00452fe1
add esp, 0x10
add esi, 0x10
mov dword [esp + 0x18], esi
lea edx, [esp + 0x18]
push edx
mov byte [esp + 0x2ac], 0xc
call fcn.00402e50
mov eax, dword [esp + 0x20]
add esp, 4
push 0x49a064
push eax
call fcn.00451dd7
add esp, 8
test eax, eax
je 0x421076
mov ecx, dword [esp + 0x1c]
push str.sign
push ecx
call fcn.00451dd7
add esp, 8
test eax, eax
je 0x421076
cmp dword [ebx - 0xc], 0
je 0x421076
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x4c]
push eax
mov ebx, 0x49804c
call fcn.0040e700
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x58]
push edx
mov ebx, eax
mov byte [esp + 0x2b8], 0xd
call fcn.00421440
push eax
lea eax, [esp + 0x58]
push eax
mov ebx, 0x497fac
mov byte [esp + 0x2c0], 0xe
call fcn.0040e700
add esp, 0x18
mov byte [esp + 0x2a8], 0xf
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x1c]
push ecx
call fcn.00403a10
mov byte [esp + 0x2a8], 0xe
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x421026
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2a8], 0xd
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42104e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2a8], 0xc
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x421076
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x20], 0
jne 0x421082
call fcn.00452c03
mov edx, dword [esp + 0x24]
cmp byte [edx + 0x15], 0
je 0x421093
call fcn.00452c03
jmp 0x4210d4
mov ecx, dword [edx + 8]
cmp byte [ecx + 0x15], 0
jne 0x4210b4
mov eax, dword [ecx]
cmp byte [eax + 0x15], 0
jne 0x4210ae
mov ecx, eax
mov eax, dword [ecx]
cmp byte [eax + 0x15], 0
je 0x4210a4
mov dword [esp + 0x24], ecx
jmp 0x4210d4
mov eax, dword [edx + 4]
cmp byte [eax + 0x15], 0
jne 0x4210d0
lea ecx, [ecx]
cmp edx, dword [eax + 8]
jne 0x4210d0
mov edx, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x15], 0
je 0x4210c0
mov dword [esp + 0x24], eax
mov byte [esp + 0x2a8], 0xb
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4210fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2a8], 0xa
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42111d
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov byte [esp + 0x2a8], 9
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420da0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x420da0
mov eax, dword [esp + 0x14]
xor ebx, ebx
cmp dword [eax - 0xc], ebx
jne 0x4211eb
add eax, 0xfffffff0
mov byte [esp + 0x2a8], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x421181
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x58]
mov byte [esp + 0x2a8], 0x10
call fcn.00421970
mov ecx, dword [esp + 0x58]
push ecx
call fcn.00451a72
mov byte [esp + 0x2ac], 0
mov esi, dword [esp + 0x3c]
add esp, 4
cmp esi, ebx
je 0x42136a
mov eax, dword [esp + 0x3c]
mov edi, eax
cmp esi, eax
je 0x421361
mov eax, dword [esi]
sub eax, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4211df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 4
cmp esi, edi
jne 0x4211c1
jmp 0x42135d
push 0x20
push str.ic3c4ocbsa539e77e0c17e52a2371fe1
lea ecx, [esp + 0x1c]
push ecx
call fcn.00403a10
mov edi, dword [esp + 0x14]
xor ebx, ebx
lea esi, [esp + 0x20]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
call fcn.0041dd90
xor eax, eax
push 0x208
mov byte [esp + 0x2ac], 0x11
lea edx, [esp + 0x90]
push ebx
push edx
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
call fcn.00458270
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
dec eax
add esp, 0xc
push eax
lea edi, [esp + 0x80]
mov ecx, esi
call fcn.00423540
lea ecx, [esp + 0x90]
add esp, 4
push ecx
mov ebx, edi
call fcn.004235f0
add esp, 4
lea edx, [esp + 0x8c]
push 0x104
push edx
call fcn.00454dab
lea eax, [esp + 0x94]
add esp, 8
lea edx, [eax + 2]
jmp 0x4212a0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4212a0
sub eax, edx
sar eax, 1
lea ecx, [esp + 0x8c]
mov ebx, eax
mov eax, dword [esp + 0x54]
push ecx
call fcn.00404790
xor ebx, ebx
mov dword [esp + 0x50], 1
cmp esi, ebx
je 0x4212d9
push esi
call fcn.00451a72
add esp, 4
mov byte [esp + 0x2a8], 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x421301
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x58]
mov byte [esp + 0x2a8], 0x12
call fcn.00421970
mov ecx, dword [esp + 0x58]
push ecx
call fcn.00451a72
mov byte [esp + 0x2ac], bl
mov esi, dword [esp + 0x3c]
add esp, 4
cmp esi, ebx
je 0x42136a
mov eax, dword [esp + 0x3c]
mov edi, eax
cmp esi, eax
je 0x421361
mov eax, dword [esi]
sub eax, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x421356
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 4
cmp esi, edi
jne 0x421338
mov esi, dword [esp + 0x38]
push esi
call fcn.00451a72
add esp, 4
mov ecx, dword [esp + 0x2c]
push ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
call fcn.00451a72
mov dword [esp + 0x2ac], 0xffffffff
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4213ae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x2a0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x288]
xor ecx, esp
call fcn.00451a7d
mov esp, ebp
pop ebp
ret