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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x55d671
mov eax, dword fs:[0]
push eax
sub esp, 0x4a8
push ebx
push esi
push edi
mov eax, dword [0x5b2ae0]
xor eax, esp
push eax
lea eax, [esp + 0x4b8]
mov dword fs:[0], eax
xor esi, esi
cmp dword [0x5d1d34], esi
jne 0x4516f2
mov ebx, dword [ebp + 8]
push ecx
mov eax, esp
mov dword [esp + 0x40], esp
mov dword [eax], esi
lea eax, [esp + 0x14]
mov edi, 1
add ebx, 0x4d18
push eax
mov edx, ebx
mov dword [0x5d1d34], edi
mov dword [0x5bf800], edi
mov dword [0x5bf944], esi
call fcn.0049e710
mov dword [esp + 0x4c0], esi
mov eax, dword [esp + 0x10]
cmp eax, esi
jne 0x451710
push esi
push esi
push 0x576208
call fcn.004f030b
mov dword [0x5bf800], esi
mov dword [0x5d1d34], esi
mov dword [esp + 0x4c0], 0xffffffff
mov eax, dword [esp + 0x10]
cmp eax, esi
je 0x4516f2
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], esi
jg 0x4516f2
push edi
mov edx, dword [ecx]
mov eax, dword [edx]
call eax
mov ecx, dword [esp + 0x4b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push ecx
mov ecx, esp
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], esp
cmp eax, esi
je 0x451724
add dword [eax + 4], edi
push ebx
call fcn.0049af70
cmp dword [eax + 0x18], esi
je 0x4517d3
mov edx, dword [esp + 0x10]
mov ecx, edi
push ecx
mov eax, esp
mov dword [eax], edx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], esp
cmp eax, esi
je 0x45174d
add dword [eax + 4], edi
lea eax, [esp + 0x1c]
push eax
mov edx, ebx
call fcn.0049ea60
mov byte [esp + 0x4c0], 1
mov edx, dword [eax]
mov eax, dword [esp + 0x10]
cmp eax, edx
je 0x451795
mov ecx, eax
mov eax, edx
mov dword [esp + 0x10], eax
cmp eax, esi
je 0x45177e
add dword [eax + 4], edi
mov eax, dword [esp + 0x10]
cmp ecx, esi
je 0x451795
dec dword [ecx + 4]
cmp dword [ecx + 4], esi
jg 0x451791
mov edx, dword [ecx]
mov eax, dword [edx]
push edi
call eax
mov eax, dword [esp + 0x10]
mov byte [esp + 0x4c0], 0
mov ecx, dword [esp + 0x18]
cmp ecx, esi
je 0x4517bf
dec dword [ecx + 4]
cmp dword [ecx + 4], esi
lea eax, [ecx + 4]
jg 0x4517b7
mov edx, dword [ecx]
mov eax, dword [edx]
push edi
call eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], esi
cmp eax, esi
jne 0x451710
push esi
push esi
push 0x578ef0
jmp 0x4516bb
cmp dword [0x5c036c], esi
je 0x4517e7
push esi
push esi
push 0x578f68
jmp 0x4516bb
cmp dword [ebp + 0xc], esi
je 0x451873
lea ecx, [esp + 0xbc]
push ecx
call fcn.0045c450
lea ecx, [esp + 0xbc]
mov byte [esp + 0x4c0], 2
call fcn.004f7ada
cmp eax, edi
je 0x45183a
lea ecx, [esp + 0xbc]
mov dword [0x5bf800], esi
mov dword [0x5d1d34], esi
mov byte [esp + 0x4c0], 0
call fcn.0045c530
jmp 0x4516cc
mov ecx, dword [esp + 0x13c]
mov dword [0x5b81b4], ecx
lea ecx, [esp + 0xbc]
mov dword [0x5bf8e4], edi
mov dword [0x5bf8e0], esi
mov dword [0x5bf8dc], esi
mov dword [0x5bf8e8], edi
mov byte [esp + 0x4c0], 0
call fcn.0045c530
mov dword [0x5bf4d4], esi
jne 0x4518c5
mov ebx, 3
cmp dword [0x5bf4d0], ebx
jb 0x4518c5
cmp dword [0x5b823c], esi
je 0x4518c5
push esi
lea edx, [esp + 0xc0]
push edx
call fcn.00484480
lea ecx, [esp + 0xbc]
mov byte [esp + 0x4c0], bl
call fcn.004f7ada
lea ecx, [esp + 0xbc]
mov byte [esp + 0x4c0], 0
call fcn.004845f0
lea eax, [esp + 0x48]
push eax
call dword [0x560734]
mov ecx, dword [ebp + 8]
push ecx
call fcn.0043ebf0
call fcn.004eff6d
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x4518f3
push 0x80004005
call fcn.00401f30
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x14], edi
mov byte [esp + 0x4c0], 4
mov eax, dword [edi - 8]
mov esi, dword [0x5bffb8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x451937
push 0x104
lea ecx, [esp + 0x18]
call fcn.00401eb0
mov edi, dword [esp + 0x14]
mov ebx, dword [0x5603e4]
push esi
push 0x104
push edi
push 0x5714ac
push 0x5737a4
push 0x5711d8
call ebx
mov eax, dword [edi - 8]
push eax
push edi
call fcn.00517f7d
add esp, 8
test eax, eax
jl 0x4522ed
cmp eax, dword [edi - 8]
jg 0x4522ed
lea edx, [esp + 0x14]
xor ecx, ecx
push 0x5714d0
mov dword [edi - 0xc], eax
push edx
mov word [edi + eax*2], cx
call fcn.0040aaf0
mov eax, dword [edi - 8]
mov esi, dword [0x5bffb8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
add esp, 8
or eax, ecx
jge 0x4519ba
push 0x104
lea ecx, [esp + 0x18]
call fcn.00401eb0
mov edi, dword [esp + 0x14]
push esi
push 0x104
push edi
push 0x5714d0
push 0x57901c
push 0x5711d8
call ebx
mov eax, dword [edi - 8]
push eax
push edi
call fcn.00517f7d
add esp, 8
test eax, eax
jl 0x4522ed
cmp eax, dword [edi - 8]
jg 0x4522ed
lea edx, [esp + 0x14]
xor ecx, ecx
push 0x5714ac
mov dword [edi - 0xc], eax
push edx
mov word [edi + eax*2], cx
call fcn.0040aaf0
mov ebx, dword [ebp + 8]
movzx eax, al
add esp, 8
cmp dword [0x5bf7fc], 0
mov dword [0x5bf8c8], eax
je 0x451a28
push 7
mov ecx, ebx
call fcn.004f6256
push 0
mov ecx, ebx
call fcn.004f6256
call fcn.00406ed0
mov edi, dword [0x5603bc]
mov esi, 6
call fcn.00406ed0
push 0x32
call edi
sub esi, 1
jne 0x451a41
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
lea esi, [ebx + 0x46d0]
push 0x5bf7fc
lea eax, [esp + 0x30]
mov edi, esi
call fcn.0047e570
xor edi, edi
mov dword [esp + 0x28], eax
cmp dword [0x5b823c], edi
je 0x451a8f
mov eax, dword [ebx + 0x78]
cmp dword [eax - 0xc], edi
je 0x451a8f
mov ebx, eax
call fcn.0047e2d0
mov ebx, dword [ebp + 8]
push 0x28
mov dword [0x5bf890], edi
mov dword [0x5bf89c], edi
call fcn.004efbd8
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov byte [esp + 0x4c0], 5
cmp esi, edi
je 0x451acf
push esi
call fcn.00448460
mov dword [esi + 0x18], edi
mov dword [esi + 0x1c], 0xffffffff
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
jmp 0x451ad1
xor esi, esi
mov byte [esp + 0x4c0], 4
mov dword [esp + 0x38], esi
mov dword [esp + 0x1c], esi
cmp dword [esi + 0x24], edi
jne 0x451aed
mov dword [esi + 0x20], 0x5c0330
push ecx
mov dword [esp + 0x1c], esp
mov eax, esp
lea ecx, [ebx + 0x4cbc]
push esi
mov dword [eax], edi
mov dword [esp + 0x20], ecx
call fcn.00497db0
mov ecx, dword [0x5bfff0]
mov eax, dword [ecx]
mov esi, dword [0x5bffd8]
mov edi, eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edi
mov edi, edi
mov ebx, dword [0x5bfff0]
test esi, esi
je 0x451b32
cmp esi, dword [0x5bffd8]
je 0x451b37
call fcn.005177ee
cmp edi, ebx
je 0x451bc1
test esi, esi
jne 0x451bb5
call fcn.005177ee
xor eax, eax
cmp edi, dword [eax + 0x18]
jne 0x451b54
call fcn.005177ee
cmp dword [edi + 0x10], 0
je 0x451b9f
test esi, esi
jne 0x451bb9
call fcn.005177ee
xor eax, eax
cmp edi, dword [eax + 0x18]
jne 0x451b6f
call fcn.005177ee
mov ebx, dword [edi + 0x10]
test ebx, ebx
je 0x451b85
push ebx
call fcn.004050f0
push ebx
call fcn.004efc12
add esp, 4
test esi, esi
jne 0x451bbd
call fcn.005177ee
cmp edi, dword [esi + 0x18]
jne 0x451b98
call fcn.005177ee
mov dword [edi + 0x10], 0
lea esi, [esp + 0x20]
call fcn.004cb7c0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
jmp 0x451b20
mov eax, dword [esi]
jmp 0x451b4a
mov eax, dword [esi]
jmp 0x451b65
mov esi, dword [esi]
jmp 0x451b8e
mov edx, dword [0x5bfff0]
mov eax, dword [edx + 4]
push eax
mov ecx, 0x5bffd8
call fcn.004498f0
mov eax, dword [0x5bfff0]
mov dword [eax + 4], eax
mov eax, dword [0x5bfff0]
xor esi, esi
mov dword [0x5bfff4], esi
mov dword [eax], eax
mov eax, dword [0x5bfff0]
mov dword [eax + 8], eax
mov ecx, dword [0x5c0010]
mov edx, dword [ecx + 4]
push edx
mov ecx, 0x5bfff8
call fcn.004cb880
mov eax, dword [0x5c0010]
mov dword [eax + 4], eax
mov eax, dword [0x5c0010]
mov dword [0x5c0014], esi
mov esi, dword [ebp + 8]
mov dword [eax], eax
mov eax, dword [0x5c0010]
add esi, 0x78
push esi
mov ebx, 0x5bffd8
mov dword [eax + 8], eax
call fcn.00443040
mov edi, dword [esp + 0x38]
mov dword [eax], edi
lea eax, [esp + 0x1c]
push eax
push 0x5bfff8
call fcn.00444120
push esi
mov ecx, eax
call fcn.00401b10
call fcn.004eff6d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x451c6d
push 0x80004005
call fcn.00401f30
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x1c]
push ecx
mov byte [esp + 0x4c4], 6
call fcn.004a8630
add esp, 4
test eax, eax
jne 0x451d85
mov ebx, dword [esp + 0x1c]
push eax
push eax
push ebx
call fcn.004f030b
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.004f62bf
lea ecx, [esi + 0x5c]
call fcn.004f62bf
mov esi, dword [ebp + 8]
push 5
mov ecx, esi
call fcn.004f6256
call fcn.00406ed0
mov edx, dword [esi + 0x20]
push edx
call dword [0x5606a8]
mov eax, dword [esi + 0x20]
mov edi, dword [0x560674]
push 3
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push eax
call edi
mov ecx, dword [esi + 0x20]
push 3
push 0
push 0
push 0
push 0
push 0xfffffffffffffffe
push ecx
call edi
xor eax, eax
mov dword [0x5bf800], eax
mov dword [0x5d1d34], eax
lea eax, [ebx - 0x10]
mov byte [esp + 0x4c0], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x451d2e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x4c0], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x451d56
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x4c0], 0xffffffff
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4516f2
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], 0
jg 0x4516f2
push 1
jmp 0x4516ec
lea ecx, [esp + 0x3c]
push ecx
push edi
mov dword [esp + 0x44], 0
call fcn.0042dfc0
add esp, 8
test eax, eax
jne 0x451e82
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.004f62bf
lea ecx, [esi + 0x5c]
call fcn.004f62bf
mov esi, dword [ebp + 8]
push 5
mov ecx, esi
call fcn.004f6256
call fcn.00406ed0
mov edx, dword [esi + 0x20]
push edx
call dword [0x5606a8]
mov eax, dword [esi + 0x20]
mov edi, dword [0x560674]
push 3
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push eax
call edi
mov ecx, dword [esi + 0x20]
push 3
xor ebx, ebx
push ebx
push ebx
push ebx
push ebx
push 0xfffffffffffffffe
push ecx
call edi
mov byte [esp + 0x4c0], 4
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [0x5bf800], ebx
mov dword [0x5d1d34], ebx
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x451e2d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x4c0], bl
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x451e54
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x4c0], 0xffffffff
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x4516f2
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], ebx
jg 0x4516f2
push 1
jmp 0x4516ec
call fcn.00451320
call fcn.00422a90
push 0
call fcn.00518671
mov ecx, dword [esp + 0x34]
add esp, 4
push 0
push 0x3e8
mov ebx, edx
mov edx, dword [esp + 0x34]
push ecx
mov esi, eax
push edx
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], ebx
call fcn.00525dc0
cdq
add eax, esi
adc edx, ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
call fcn.004eff6d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x451edf
push 0x80004005
call fcn.00401f30
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov ebx, dword [esp + 0x28]
mov byte [esp + 0x4c0], 7
xor esi, esi
lea ecx, [ecx]
cmp esi, 0xffffffff
je 0x451f06
inc esi
cmp dword [0x5bf4d4], 0
jmp 0x451f18
call fcn.00422010
call fcn.004a80c0
cmp ebx, 0xffffffff
je 0x451f40
push esi
push ebx
lea ecx, [esp + 0x28]
push 0x579030
push ecx
call fcn.00401cc0
add esp, 0x10
jmp 0x451fc1
lea edx, [esp + 0x40]
push edx
lea eax, [esp + 0x9c]
push eax
call fcn.00517b5a
add esp, 8
test eax, eax
jne 0x451f62
mov edi, dword [esp + 0x98]
jmp 0x451f65
or edi, 0xffffffff
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.00517b5a
add esp, 8
test eax, eax
jne 0x451f81
mov ebx, dword [esp + 0x54]
jmp 0x451f84
or ebx, 0xffffffff
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x78]
push ecx
call fcn.00517b5a
add esp, 8
test eax, eax
jne 0x451fa0
mov eax, dword [esp + 0x7c]
jmp 0x451fa3
or eax, 0xffffffff
push esi
push edi
push ebx
push eax
lea edx, [esp + 0x30]
push 0x579068
push edx
call fcn.00401cc0
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x50]
add esp, 0x18
mov eax, dword [esp + 0x20]
mov ecx, dword [0x5bf948]
push eax
add ecx, 0x188
call fcn.004f61b4
push esi
call fcn.00451440
add esp, 4
push 1
push 0
push 1
push 0
push edi
mov dword [0x5bf8a4], 0
call fcn.00428bf0
add esp, 0x14
cmp dword [0x5bf890], 0
jne 0x452075
cmp ebx, 0xffffffff
je 0x452013
cmp esi, ebx
jb 0x451f00
jmp 0x452075
push 0
call fcn.00518671
add esp, 4
cmp edx, dword [esp + 0x30]
jg 0x452075
jl 0x451f00
cmp eax, dword [esp + 0x2c]
jae 0x452075
jmp 0x451f00
cmp dword [0x5bf8e8], 0
je 0x4520a8
mov ecx, dword [0x5bf8d4]
mov dword [0x5bf8e8], 0
mov dword [0x5bf8d8], 1
test ecx, ecx
je 0x4520a3
push 0
call fcn.004f6256
call fcn.0045e530
call fcn.00422be0
mov ecx, dword [0x5bf8d4]
xor edi, edi
cmp ecx, edi
je 0x4520c8
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push 1
call eax
mov dword [0x5bf8d4], edi
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.004f62bf
lea ecx, [esi + 0x5c]
call fcn.004f62bf
mov esi, dword [ebp + 8]
cmp dword [0x5bf944], edi
jne 0x4521cd
mov ecx, dword [esi + 0x4c34]
push edi
push edi
push 0xf0
push ecx
call dword [0x56077c]
cmp eax, 1
jne 0x4521cd
mov esi, dword [0x5bf8ac]
push eax
call fcn.00433810
cmp eax, 2
je 0x4521ca
mov eax, dword [0x5bf8ac]
mov esi, dword [eax + 0x74]
push edi
lea edx, [esp + 0x340]
push edx
mov dword [eax + 0x74], edi
call fcn.00460d70
lea ecx, [esp + 0x33c]
mov byte [esp + 0x4c0], 9
call fcn.004f7ada
lea ecx, [esp + 0x33c]
cmp eax, 2
je 0x4521b5
mov dword [0x5bf800], edi
mov dword [0x5d1d34], edi
mov byte [esp + 0x4c0], 7
call fcn.00460e90
lea ecx, [esp + 0x20]
call fcn.00401ce0
lea ecx, [esp + 0x1c]
call fcn.00401ce0
lea ecx, [esp + 0x14]
call fcn.00401ce0
lea esi, [esp + 0x10]
mov dword [esp + 0x4c0], 0xffffffff
call fcn.00404170
mov ecx, dword [esp + 0x4b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [0x5bf8ac]
mov dword [eax + 0x74], esi
mov byte [esp + 0x4c0], 7
call fcn.00460e90
mov esi, dword [ebp + 8]
cmp dword [0x5b823c], edi
je 0x452229
cmp dword [0x5bf7fc], 0
mov ecx, esi
jne 0x452222
push 5
call fcn.004f6256
call fcn.00406ed0
mov ecx, dword [esi + 0x20]
push ecx
call dword [0x5606a8]
mov edx, dword [esi + 0x20]
mov ebx, dword [0x560674]
push 3
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push edx
call ebx
mov eax, dword [esi + 0x20]
push 3
push 0
push 0
push 0
push 0
push 0xfffffffffffffffe
push eax
call ebx
jmp 0x452229
push 7
call fcn.004f6256
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
push ecx
push edx
call dword [0x560708]
mov byte [esp + 0x4c0], 6
mov eax, dword [esp + 0x20]
xor esi, esi
add eax, 0xfffffff0
mov dword [0x5bf800], esi
mov dword [0x5d1d34], esi
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45226f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x4c0], 4
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 0x452297
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x4c0], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4522bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x4c0], 0xffffffff
mov eax, dword [esp + 0x10]
cmp eax, esi
je 0x4516f2
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], esi
jg 0x4516f2
push 1
jmp 0x4516ec
push 0x80070057
call fcn.00401f30
int3