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

Disassembly:
push 0xffffffffffffffff
push 0x54ea70
mov eax, dword fs:[0]
push eax
sub esp, 0x28
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5a9e98]
xor eax, esp
push eax
lea eax, [esp + 0x3c]
mov dword fs:[0], eax
mov dword [esp + 0x14], ecx
mov ebp, dword [esp + 0x4c]
mov ecx, ebp
call fcn.004311f0
test eax, eax
jne 0x4c9b32
call fcn.004fc960
xor ecx, ecx
xor ebx, ebx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4c949a
push 0x80004005
call fcn.00401c00
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x4c], eax
lea edi, [ebp + 0xc]
mov ecx, edi
mov dword [esp + 0x44], ebx
call fcn.00403c60
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov esi, dword [ebp + 0xb0]
mov ecx, edi
call eax
cmp esi, 4
je 0x4c94ed
cmp esi, 5
je 0x4c94ed
mov ecx, edi
call fcn.00403c60
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov esi, dword [ebp + 0x4c]
mov ecx, edi
call eax
cmp esi, 2
mov dword [esp + 0x18], ebx
jne 0x4c94f5
mov dword [esp + 0x18], 1
mov ebx, dword [esp + 0x50]
test ebx, ebx
mov esi, dword [esp + 0x54]
mov eax, 3
je 0x4c955d
test esi, esi
je 0x4c95c1
cmp dword [ebx + 0x18], eax
jne 0x4c955d
cmp dword [esi + 0x18], eax
jne 0x4c955d
mov ecx, ebp
call fcn.004af2d0
cmp eax, 4
jne 0x4c955d
mov ecx, dword [ebx + 4]
push ecx
lea edx, [esp + 0x50]
push 0xe204
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x20001
jmp 0x4ca4d1
test esi, esi
je 0x4c95c1
cmp dword [esi + 0x18], 1
jne 0x4c95c1
mov ecx, edi
call fcn.00403c60
mov ecx, dword [ebp + 0x1cc]
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x50], ecx
mov ecx, edi
call eax
test byte [esp + 0x50], 1
je 0x4c95c1
mov ecx, dword [esi + 4]
push ecx
lea edx, [esp + 0x50]
push 0xe203
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x20001
jmp 0x4ca4d1
mov ecx, edi
call fcn.00403c60
mov ecx, dword [ebp + 0x224]
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x54], ecx
mov ecx, edi
call eax
mov ecx, edi
call fcn.00403c60
mov ecx, dword [ebp + 0xb0]
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x50], ecx
mov ecx, edi
call eax
cmp dword [esp + 0x50], 4
je 0x4c960d
cmp dword [esp + 0x50], 5
je 0x4c960d
mov ecx, 0x5adbf0
call fcn.0048c240
or eax, 0xffffffff
test esi, esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
je 0x4c964d
cmp dword [esi + 0x18], 3
jne 0x4c964d
mov ecx, esi
call fcn.00410970
test eax, eax
je 0x4c964d
push ecx
lea edx, [esi + 0xc]
mov ecx, esp
mov dword [esp + 0x54], esp
push edx
call fcn.00402c20
call fcn.004baf80
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x54]
cmp eax, 0x20002
jne 0x4c9bec
test esi, esi
je 0x4c9a81
mov eax, dword [esi + 0x18]
cmp eax, 1
jne 0x4c97f7
mov eax, dword [esi + 8]
cmp dword [eax - 0xc], 0
je 0x4c97f7
mov dword [esp + 0x5c], ebp
mov eax, dword [esi + 8]
push 0
push ecx
sub eax, 0x10
mov dword [esp + 0x2c], esp
mov edi, esp
push eax
call fcn.00402b80
add eax, 0x10
add esp, 4
mov dword [edi], eax
mov edi, dword [esp + 0x64]
lea ecx, [esp + 0x24]
push ecx
mov ecx, edi
mov byte [esp + 0x50], 1
call fcn.004b4db0
mov edx, dword [eax]
add edi, 0xc
mov ecx, edi
mov byte [esp + 0x4c], 2
mov dword [esp + 0x58], edx
call fcn.00403c60
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 0xb8]
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x5c], ecx
mov ecx, edi
call eax
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
push ecx
push edx
lea ecx, [esp + 0x40]
call fcn.00412d60
mov byte [esp + 0x4c], 3
lea ecx, [esp + 0x60]
push ecx
mov ecx, eax
mov byte [esp + 0x50], 5
call fcn.00412e20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0x44], 7
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4c972d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x44], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4c9752
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x5c]
lea ecx, [esp + 0x20]
push ecx
mov ecx, edi
call fcn.004b4db0
mov eax, dword [eax]
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4c9490
mov edx, dword [esp + 0x58]
push eax
push edx
call fcn.005204eb
add esp, 8
test eax, eax
mov eax, dword [esp + 0x20]
sete byte [esp + 0x5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4c97a8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x5c], 0
jne 0x4c98ab
mov ecx, edi
call fcn.004de170
mov ecx, dword [esp + 0x14]
push eax
call fcn.004b19e0
mov edi, eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
mov dword [esp + 0x5c], edi
mov byte [esp + 0x44], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4c97ef
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test edi, edi
jne 0x4c9681
cmp dword [esi + 0x18], 1
jne 0x4c98ed
push 0x565c70
lea ecx, [esi + 0xc]
call fcn.00402500
push ecx
lea edi, [esi + 4]
mov ecx, esp
mov dword [esp + 0x60], esp
push edi
call fcn.00402c20
mov ecx, 0x5adbf0
call fcn.0048d910
test eax, eax
mov dword [esi + 0x18], eax
jne 0x4c98ed
push str.TODO:_Not_enough_memory_allocated_to_get_security_info..._r_n
lea ecx, [esp + 0x68]
push edi
push ecx
call fcn.00403130
add esi, 8
push esi
push eax
lea edx, [esp + 0x70]
push edx
mov byte [esp + 0x5c], 9
call fcn.00405810
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x68]
push 0xe203
push ecx
mov byte [esp + 0x68], 0xa
call fcn.0041b330
add esp, 0x24
lea ecx, [esp + 0x5c]
call fcn.00401f50
lea ecx, [esp + 0x64]
mov byte [esp + 0x44], 0
call fcn.00401f50
mov edx, dword [esp + 0x4c]
push 1
push 1
push edx
mov ecx, ebp
call fcn.004dfd30
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x20001
jmp 0x4ca4d1
mov ecx, dword [esi + 4]
push ecx
lea edx, [esp + 0x50]
push 0x156a
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
lea ecx, [esp + 0x58]
call fcn.00401f50
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x20001
jmp 0x4ca4d1
cmp dword [esi + 0x18], 0
jne 0x4c9919
mov ecx, ebp
call fcn.004af300
test al, 0x10
jne 0x4c9919
mov eax, dword [esi + 4]
push eax
lea ecx, [esp + 0x50]
push 0xe205
push ecx
call fcn.0041b330
add esp, 0xc
jmp 0x4c9888
mov eax, dword [esp + 0x64]
cmp eax, 1
je 0x4c9a66
cmp eax, 2
jne 0x4c9935
cmp dword [esi + 0x18], 0
jne 0x4c9a66
test ebx, ebx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
push eax
mov eax, dword [esi + 0x18]
push ecx
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x6c], esp
je 0x4c9969
lea edx, [esi + 4]
push edx
call fcn.00402c20
push ecx
add ebx, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
mov byte [esp + 0x58], 0xb
push ebx
jmp 0x4c997f
lea edi, [esi + 4]
push edi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x6c], esp
mov byte [esp + 0x58], 0xc
push edi
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
mov edi, eax
mov eax, dword [esp + 0x64]
cmp eax, 4
je 0x4c99ad
cmp eax, 3
jne 0x4c99a9
cmp dword [esi + 0x18], 0
jne 0x4c99b3
push 4
jmp 0x4c99b9
cmp dword [esi + 0x18], 0
je 0x4c99b7
push 6
jmp 0x4c99b9
push 0
mov ecx, edi
call fcn.004af040
cmp dword [esi + 0x18], 3
jne 0x4ca40c
cmp dword [esp + 0x18], 0
jne 0x4c9a2d
mov ecx, esi
call fcn.00410970
test eax, eax
je 0x4c9a2d
mov edx, dword [esi + 0xc]
cmp dword [edx - 0xc], 0
je 0x4c9a2d
lea eax, [esp + 0x30]
push eax
mov ecx, esi
call fcn.004109d0
mov ecx, esi
mov ebx, eax
call fcn.004109f0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push eax
sub esp, 0xc
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, edi
call fcn.004aecf0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push edx
push eax
mov ecx, edi
call fcn.004aedb0
jmp 0x4ca40c
fldz
push 0
sub esp, 0xc
fstp qword [esp + 0x40]
mov edx, dword [esp + 0x40]
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x44]
mov ecx, 1
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, edi
call fcn.004aecf0
push 0xffffffffffffffff
push 0xffffffffffffffff
mov ecx, edi
call fcn.004ae7f0
jmp 0x4ca40c
mov eax, dword [esi + 4]
push eax
lea ecx, [esp + 0x50]
push 0xe204
push ecx
call fcn.0041b330
add esp, 0xc
jmp 0x4c9888
test ebx, ebx
je 0x4ca410
mov ecx, ebp
call fcn.004af300
test al, 4
je 0x4ca410
lea eax, [esp + 0x50]
push eax
mov ecx, ebp
call fcn.004b4e40
mov ecx, dword [ebx + 4]
mov eax, dword [eax]
push ecx
push eax
lea ecx, [esp + 0x6c]
push ecx
mov byte [esp + 0x50], 0xd
call fcn.0042e2e0
add esp, 0xc
lea ecx, [esp + 0x50]
mov byte [esp + 0x44], 0xf
call fcn.00401f50
mov ecx, ebp
call fcn.004af300
test al, 8
je 0x4c9b44
mov eax, dword [esp + 0x58]
cmp dword [eax], 0
je 0x4c9ae7
mov edx, dword [esp + 0x5c]
mov esi, dword [edx]
jmp 0x4c9b15
push 0
push 0
push eax
mov eax, dword [ebx + 0x18]
push 0
push eax
push ecx
lea eax, [esp + 0x7c]
mov ecx, esp
mov dword [esp + 0x70], esp
push eax
call fcn.00402c20
mov ecx, dword [esp + 0x2c]
push ebp
call fcn.004bb8b0
mov ecx, dword [esp + 0x5c]
mov esi, eax
mov dword [ecx], esi
mov ecx, ebp
call fcn.004311f0
test eax, eax
je 0x4c9b3c
lea ecx, [esp + 0x64]
call fcn.00401f50
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x30004
jmp 0x4ca4d1
test esi, esi
je 0x4c9bde
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x4c9b57
mov edx, dword [esp + 0x64]
push edx
call fcn.0042ed90
jmp 0x4c9b66
cmp eax, 3
jne 0x4c9b6d
mov eax, dword [esp + 0x64]
push eax
call fcn.0042c760
add esp, 4
test eax, eax
jne 0x4c9bde
lea ecx, [esp + 0x5c]
call fcn.00402020
cmp dword [ebx + 0x18], 0
mov byte [esp + 0x44], 0x10
jne 0x4c9b92
mov ecx, dword [esp + 0x64]
push ecx
push 0xe200
lea edx, [esp + 0x64]
push edx
jmp 0x4c9ba1
mov eax, dword [esp + 0x64]
push eax
push 0xe1b3
lea ecx, [esp + 0x64]
push ecx
call fcn.0041b330
mov edx, dword [esp + 0x68]
add esp, 0xc
push 1
push 2
push edx
mov ecx, ebp
call fcn.004dfd30
lea ecx, [esp + 0x5c]
call fcn.00401f50
lea ecx, [esp + 0x64]
call fcn.00401f50
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x30003
jmp 0x4ca4d1
lea ecx, [esp + 0x64]
call fcn.00401f50
jmp 0x4ca410
cmp eax, 0x20003
jne 0x4c9ecc
test ebx, ebx
je 0x4c9d2c
cmp dword [ebx + 0x18], 0
jne 0x4c9c18
mov ecx, ebp
call fcn.004af300
test al, 0x10
jne 0x4c9c18
mov eax, dword [ebx + 4]
jmp 0x4c9901
mov eax, dword [esp + 0x64]
cmp eax, 1
je 0x4c9cef
cmp eax, 2
jne 0x4c9c34
cmp dword [ebx + 0x18], 0
jne 0x4c9cef
push ecx
lea eax, [ebx + 0xc]
mov ecx, esp
mov dword [esp + 0x60], esp
push eax
call fcn.00402c20
call fcn.004baf80
add esp, 4
test esi, esi
push edx
push eax
mov eax, dword [ebx + 0x18]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x6c], esp
je 0x4c9c78
add esi, 4
push esi
call fcn.00402c20
push ecx
lea edx, [ebx + 4]
mov ecx, esp
mov dword [esp + 0x6c], esp
mov byte [esp + 0x58], 0x12
push edx
jmp 0x4c9c8e
lea esi, [ebx + 4]
push esi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x6c], esp
mov byte [esp + 0x58], 0x13
push esi
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
mov edi, eax
mov eax, dword [esp + 0x64]
cmp eax, 4
je 0x4c9cbc
cmp eax, 3
jne 0x4c9cb8
cmp dword [ebx + 0x18], 0
jne 0x4c9cc2
push 4
jmp 0x4c9cc8
cmp dword [ebx + 0x18], 0
je 0x4c9cc6
push 6
jmp 0x4c9cc8
push 0
mov ecx, edi
call fcn.004af040
cmp dword [ebx + 0x18], 3
jne 0x4ca40c
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
push ecx
push edx
mov ecx, edi
call fcn.004aedb0
jmp 0x4ca40c
lea ecx, [esp + 0x5c]
call fcn.00402020
mov eax, dword [ebx + 4]
push eax
lea ecx, [esp + 0x60]
push 0xe204
push ecx
mov byte [esp + 0x50], 0x11
call fcn.0041b330
mov edx, dword [esp + 0x68]
add esp, 0xc
push 1
push 1
push edx
mov ecx, ebp
call fcn.004dfd30
lea ecx, [esp + 0x5c]
jmp 0x4c98d5
test esi, esi
je 0x4ca410
mov ecx, ebp
call fcn.004af300
test al, 4
je 0x4ca410
lea eax, [esp + 0x50]
push eax
mov ecx, ebp
call fcn.004b4db0
mov eax, dword [eax]
push eax
mov ecx, ebp
mov byte [esp + 0x48], 0x14
call fcn.004aee40
push eax
lea ecx, [esp + 0x30]
call fcn.00412d60
lea ecx, [esp + 0x50]
mov byte [esp + 0x44], 0x16
call fcn.00401f50
xor ecx, ecx
cmp dword [esi + 0x18], ecx
lea edx, [esi + 4]
sete cl
push ecx
push ecx
mov ecx, esp
mov dword [esp + 0x5c], esp
push edx
call fcn.00402c20
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x34]
call fcn.00412e20
mov ecx, ebp
mov byte [esp + 0x44], 0x17
call fcn.004af300
test al, 8
je 0x4c9e24
mov eax, dword [esp + 0x58]
cmp dword [eax], 0
je 0x4c9dbe
mov ecx, dword [esp + 0x5c]
mov edi, dword [ecx]
jmp 0x4c9dec
push 0
push 0
push eax
mov eax, dword [esi + 0x18]
push 1
push eax
push ecx
lea edx, [esp + 0x7c]
mov ecx, esp
mov dword [esp + 0x70], esp
push edx
call fcn.00402c20
mov ecx, dword [esp + 0x2c]
push ebp
call fcn.004bb8b0
mov edi, eax
mov eax, dword [esp + 0x5c]
mov dword [eax], edi
mov ecx, ebp
call fcn.004311f0
test eax, eax
je 0x4c9e1c
lea ecx, [esp + 0x64]
call fcn.00401f50
lea ecx, [esp + 0x28]
call fcn.00401f50
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, 0x30004
jmp 0x4ca4d1
test edi, edi
je 0x4c9eb5
lea ecx, [esp + 0x5c]
push ecx
mov ecx, ebp
call fcn.004b4db0
mov ecx, ebp
mov byte [esp + 0x44], 0x18
call fcn.004aeb90
mov edx, dword [esp + 0x64]
push edx
mov ecx, ebp
mov edi, eax
call fcn.004be230
mov esi, dword [esi + 0x18]
push esi
mov ecx, ebp
call fcn.004aec00
mov ecx, dword [esp + 0x14]
push ebp
call fcn.004c74d0
mov esi, eax
mov eax, dword [esp + 0x5c]
push eax
mov ecx, ebp
call fcn.004be230
push edi
mov ecx, ebp
call fcn.004aec00
mov ecx, esi
and ecx, 0xffff0000
cmp ecx, 0x10000
lea ecx, [esp + 0x5c]
je 0x4c9eb0
call fcn.00401f50
lea ecx, [esp + 0x64]
call fcn.00401f50
lea ecx, [esp + 0x28]
call fcn.00401f50
lea ecx, [esp + 0x4c]
call fcn.00401f50
mov eax, esi
jmp 0x4ca4d1
call fcn.00401f50
lea ecx, [esp + 0x64]
call fcn.00401f50
lea ecx, [esp + 0x28]
call fcn.00401f50
jmp 0x4ca410
cmp eax, 0x20016
jne 0x4c9f72
test esi, esi
je 0x4ca410
test ebx, ebx
push ecx
mov ecx, esp
mov dword [esp + 0x60], esp
je 0x4c9f23
lea edx, [esi + 0xc]
push edx
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
push ecx
add ebx, 4
mov ecx, esp
mov dword [esp + 0x78], esp
mov byte [esp + 0x58], 0x19
push ebx
jmp 0x4c9f57
lea eax, [esi + 0xc]
push eax
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
mov byte [esp + 0x58], 0x1a
push esi
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
mov edi, eax
jmp 0x4ca40c
cmp eax, 0x20014
jne 0x4ca410
test esi, esi
je 0x4ca365
test ebx, ebx
mov eax, dword [esi + 0x18]
je 0x4ca2d1
cmp eax, dword [ebx + 0x18]
jne 0x4ca2a6
test eax, eax
mov ecx, ebp
jne 0x4ca018
call fcn.004af300
test al, 0x10
je 0x4ca410
mov ecx, dword [ebx + 4]
add ebx, 4
push ecx
lea edx, [esp + 0x50]
push 0xe1e9
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
mov eax, dword [esi + 0x18]
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
push ebx
mov byte [esp + 0x5c], 0x1b
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
push 0x20014
jmp 0x4ca403
call fcn.004af2d0
cmp eax, 5
jne 0x4ca046
mov eax, dword [esp + 0x58]
cmp dword [eax], 0
je 0x4ca033
mov ecx, dword [esp + 0x5c]
mov eax, dword [ecx]
jmp 0x4ca046
mov ecx, dword [esp + 0x14]
push eax
push esi
push ebx
push ebp
call fcn.004c9180
mov edx, dword [esp + 0x5c]
mov dword [edx], eax
cmp eax, 7
jne 0x4ca160
mov edi, dword [esp + 0x14]
push esi
push ebx
mov ecx, edi
call fcn.004b2800
test eax, eax
jge 0x4ca0e6
mov eax, dword [ebx + 4]
add ebx, 4
push eax
lea ecx, [esp + 0x50]
push 0xe1e7
push ecx
call fcn.0041b330
mov edx, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push edx
mov ecx, ebp
call fcn.004dfd30
push ecx
lea eax, [esi + 0xc]
mov ecx, esp
mov dword [esp + 0x60], esp
push eax
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
mov byte [esp + 0x54], 0x1c
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
push ebx
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
push 0x20002
jmp 0x4ca28f
push esi
push ebx
mov ecx, edi
call fcn.004b2800
test eax, eax
jle 0x4ca410
mov ecx, dword [ebx + 4]
lea edi, [ebx + 4]
push ecx
lea edx, [esp + 0x50]
push 0xe1e8
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
push ecx
add ebx, 0xc
mov ecx, esp
mov dword [esp + 0x60], esp
push ebx
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
mov byte [esp + 0x58], 0x1d
push edi
jmp 0x4ca276
cmp eax, 6
jne 0x4ca410
lea eax, [ebx + 0xc]
mov dword [esp + 0x5c], eax
mov eax, dword [eax]
push eax
call fcn.0049f340
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0xc]
lea edi, [esi + 0xc]
push eax
mov dword [esp + 0x34], edx
call fcn.0049f340
add esp, 8
cmp dword [esp + 0x2c], edx
jg 0x4ca211
jl 0x4ca19d
cmp dword [esp + 0x28], eax
jae 0x4ca1fb
mov ecx, dword [ebx + 4]
add ebx, 4
push ecx
lea edx, [esp + 0x50]
push 0xe1e7
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
push ecx
mov ecx, esp
mov dword [esp + 0x60], esp
push edi
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
mov byte [esp + 0x54], 0x1e
jmp 0x4ca0c0
cmp dword [esp + 0x2c], edx
jl 0x4ca410
jg 0x4ca211
cmp dword [esp + 0x28], eax
jbe 0x4ca410
mov ecx, dword [ebx + 4]
add ebx, 4
push ecx
lea edx, [esp + 0x50]
push 0xe1e8
push edx
call fcn.0041b330
mov eax, dword [esp + 0x58]
add esp, 0xc
push 1
push 1
push eax
mov ecx, ebp
call fcn.004dfd30
mov edx, dword [esp + 0x5c]
push ecx
mov ecx, esp
mov dword [esp + 0x68], esp
push edx
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
mov byte [esp + 0x58], 0x1f
push ebx
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
push 0x20003
mov edi, eax
mov ecx, edi
call fcn.004aea10
push 0
mov ecx, edi
call fcn.004af040
jmp 0x4ca40c
mov eax, dword [esi + 4]
push eax
lea ecx, [esp + 0x50]
push 0xe1e3
push ecx
call fcn.0041b330
mov edx, dword [esp + 0x58]
add esp, 0xc
push 1
push 2
push edx
mov ecx, ebp
call fcn.004dfd30
jmp 0x4ca410
test eax, eax
jne 0x4ca327
mov ecx, ebp
call fcn.004af300
test al, 0x10
je 0x4ca410
mov eax, dword [esi + 0x18]
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
mov byte [esp + 0x54], 0x20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
push esi
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
push 0x20002
jmp 0x4ca403
cmp eax, 3
jne 0x4ca410
push ecx
lea eax, [esi + 0xc]
mov ecx, esp
mov dword [esp + 0x60], esp
push eax
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [esi + 0x18]
push eax
push ecx
add esi, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
mov byte [esp + 0x54], 0x21
jmp 0x4ca301
test ebx, ebx
je 0x4ca410
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x4ca3aa
mov ecx, ebp
call fcn.004af300
test al, 0x10
je 0x4ca410
mov eax, dword [ebx + 0x18]
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
push ecx
add ebx, 4
mov ecx, esp
mov dword [esp + 0x6c], esp
push ebx
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
mov byte [esp + 0x58], 0x22
push ebx
jmp 0x4ca3ea
cmp eax, 3
jne 0x4ca410
push ecx
lea edx, [ebx + 0xc]
mov ecx, esp
mov dword [esp + 0x60], esp
push edx
call fcn.00402c20
call fcn.004baf80
add esp, 4
push edx
push eax
mov eax, dword [ebx + 0x18]
push eax
push ecx
lea esi, [ebx + 4]
mov ecx, esp
mov dword [esp + 0x6c], esp
push esi
call fcn.00402c20
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
mov byte [esp + 0x58], 0x23
push esi
call fcn.00402c20
mov ecx, dword [esp + 0x28]
push ebp
mov byte [esp + 0x5c], 0
call fcn.004bef50
push 0x20003
mov edi, eax
mov ecx, edi
call fcn.004aea10
test edi, edi
jne 0x4ca446
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
mov dword [esp + 0x44], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4c98e3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x20001
jmp 0x4ca4d1
mov ecx, ebp
call fcn.004311f0
test eax, eax
mov ecx, edi
je 0x4ca48a
mov edx, dword [edi]
mov eax, dword [edx]
push 1
call eax
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
mov dword [esp + 0x44], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ca483
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x30004
jmp 0x4ca4d1
push 0
push 0x10005
call fcn.004dd950
mov ecx, dword [esp + 0x60]
mov eax, dword [ecx + 8]
push edi
push eax
call fcn.004277c0
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
mov dword [esp + 0x44], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ca4cc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x10001
mov ecx, dword [esp + 0x3c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 0x1c