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

Disassembly:
push 0xffffffffffffffff
push 0x56cddc
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x9c
push ebx
mov ebx, ecx
mov ecx, dword [0x5c99c0]
push ebp
xor ebp, ebp
push esi
cmp ecx, ebp
push edi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x28], ebp
je 0x52f57a
cmp dword [ebx + 4], ebp
jne 0x52f57a
mov eax, dword [ebx + 8]
push eax
call fcn.0051d4c0
mov dword [esp + 0x28], eax
call fcn.0053bed0
mov eax, dword [esp + 0xc8]
mov ecx, dword [0x5c9ff4]
mov edx, dword [0x5c9ff8]
cmp eax, ebp
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], edx
mov edi, 1
je 0x52f6a8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x60]
test eax, eax
je 0x52f6b5
mov dword [esp + 0x14], ebp
cmp dword [ebx + 0x78], ebp
je 0x52f5ce
cmp dword [ebx + 0x8c], ebp
jne 0x52f5ce
mov dword [esp + 0xcc], edi
mov ecx, dword [ebx + 0x7c]
mov dword [esp + 0x80], ebp
push ecx
push 0x5c4cf8
call fcn.0054d2b4
mov ecx, dword [ebx + 8]
mov esi, dword [esp + 0xc4]
add esp, 8
cmp ecx, ebp
je 0x52f620
cmp ecx, 0xffffffff
je 0x52f620
cmp dword [ebx + 0x90], ebp
jne 0x52f620
cmp eax, ebp
je 0x52f620
cmp dword [eax + 0x488], ecx
jne 0x52f620
mov edx, dword [esi]
push 0x5c9f88
mov ecx, esi
call dword [edx + 0x30]
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx]
add eax, 2
mov edx, dword [ecx + 4]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x44], edx
lea edx, [esp + 0x18]
mov ecx, dword [ecx + 0xc]
push edx
mov dword [esp + 0x4c], ecx
call fcn.00554c20
mov ecx, dword [eax]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
add esp, 4
lea ecx, [ecx + eax + 2]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x78], ecx
push 0xffffffffffffffff
lea ecx, [esp + 0x74]
push edi
push ecx
mov dword [esp + 0x80], edx
mov dword [esp + 0x88], eax
call dword [0x571454]
cmp dword [0x5c4b88], ebp
je 0x52f6a4
mov edx, dword [ebx + 8]
push edx
call fcn.00555a80
add esp, 4
test eax, eax
jne 0x52f6be
xor edi, edi
jmp 0x52f70b
test dword [ebx + 0xc], 0x40000
je 0x52f5b6
mov dword [esp + 0x14], edi
jmp 0x52f5ba
mov eax, dword [ebx + 0x7c]
xor edi, edi
push eax
push 0x5c4cf8
mov dword [esp + 0x38], edi
call fcn.0054d2b4
add esp, 8
cmp eax, ebp
je 0x52f70f
mov ecx, dword [eax + 0x20]
push ecx
call dword [0x571434]
push eax
call fcn.00513602
push eax
push 0x5c4c40
call fcn.0054d2b4
add esp, 8
cmp eax, ebp
je 0x52f70f
mov ecx, eax
call fcn.00532c40
test eax, eax
je 0x52f70f
mov edi, 1
mov dword [esp + 0x30], edi
cmp edi, ebp
mov dword [esp + 0x38], ebp
je 0x52f757
mov eax, dword [esp + 0xcc]
mov ecx, 1
cmp eax, ebp
mov dword [esp + 0x38], ecx
mov edx, 0x110000
je 0x52f73b
test dword [ebx + 0xc], edx
je 0x52f73b
xor ecx, ecx
mov dword [esp + 0x38], ecx
cmp dword [ebx + 4], ebp
je 0x52f745
mov eax, dword [ebx + 0x40]
jmp 0x52f748
mov eax, dword [ebx + 0x3c]
cmp eax, ebp
jge 0x52f772
test dword [ebx + 0xc], edx
jne 0x52f772
mov dword [esp + 0x38], ebp
jmp 0x52f784
test dword [ebx + 0xc], 0x110000
je 0x52f784
mov eax, dword [esp + 0xcc]
xor ecx, ecx
cmp eax, ebp
sete cl
mov dword [esp + 0x38], ecx
cmp ecx, ebp
je 0x52f784
lea edx, [esp + 0x70]
push edx
push esi
call fcn.00526e20
add esp, 8
mov ecx, dword [ebx + 0x18]
cmp ecx, ebp
je 0x52f79c
cmp dword [ebx + 4], ebp
je 0x52f795
mov eax, dword [ebx + 0x40]
jmp 0x52f798
mov eax, dword [ebx + 0x3c]
cmp eax, ebp
jge 0x52f7bf
mov eax, dword [ebx + 4]
mov edx, 1
mov dword [ebx + 0x18], edx
mov dword [ebx + 4], edx
cmp dword [ebx + 0x40], ebp
jge 0x52f7bf
mov edx, dword [ebx + 0x3c]
mov dword [ebx + 4], ebp
cmp edx, ebp
jge 0x52f7bf
mov dword [ebx + 0x18], ecx
mov dword [ebx + 4], eax
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x88], ebp
mov dword [esp + 0x84], 0x57f0ac
lea eax, [esp + 0x3c]
mov dword [esp + 0xb4], ebp
push eax
call dword [0x5700b8]
push eax
lea ecx, [esp + 0x88]
call fcn.00513b7e
cmp dword [ebx + 0x18], ebp
je 0x52fa35
cmp dword [ebx + 4], ebp
je 0x52f807
mov eax, dword [ebx + 0x40]
jmp 0x52f80a
mov eax, dword [ebx + 0x3c]
cmp eax, ebp
jl 0x52fa35
cmp dword [esp + 0xc4], ebp
je 0x52fa35
lea ecx, [esp + 0x84]
push ecx
mov ecx, esi
call fcn.0054d536
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x18]
sub edi, ecx
push edx
call fcn.00554c20
mov ecx, eax
mov eax, dword [esp + 0x4c]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x44]
sub eax, edx
sub eax, ecx
cdq
sub eax, edx
lea edx, [esp + 0x50]
mov ebp, eax
push edx
sar ebp, 1
call fcn.00554c20
mov ecx, dword [eax]
add esp, 8
sub edi, ecx
mov eax, edi
cdq
sub eax, edx
mov edi, eax
mov eax, dword [ebx + 0xc]
sar edi, 1
test eax, 0x10000
je 0x52f88b
mov ecx, dword [esp + 0xc8]
test ecx, ecx
jne 0x52f88b
inc edi
inc ebp
test eax, 0x20000
jne 0x52f8b3
test eax, 0x40000
je 0x52f8b3
mov eax, dword [esp + 0xd0]
test eax, eax
je 0x52f8b3
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x52f96c
mov eax, dword [esp + 0x28]
test eax, eax
je 0x52f915
lea eax, [esp + 0x18]
push eax
call fcn.00554c20
mov edx, dword [eax]
add esp, 4
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x3c]
add eax, edi
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x40]
add edx, eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x50]
add ecx, ebp
lea eax, [esp + 0x9c]
mov dword [esp + 0xa0], ecx
add edx, ecx
mov ecx, dword [esp + 0x28]
push eax
push esi
mov dword [esp + 0xb0], edx
call fcn.00516050
jmp 0x52f947
mov eax, dword [ebx + 4]
test eax, eax
je 0x52f921
mov eax, dword [ebx + 0x40]
jmp 0x52f924
mov eax, dword [ebx + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
push 0
push 0
push 0
push eax
add ecx, ebp
lea eax, [edi + edx]
push ecx
mov ecx, dword [esp + 0xd8]
push eax
push esi
call fcn.00526ac0
mov eax, dword [esp + 0xc8]
test eax, eax
jne 0x52f95b
test dword [ebx + 0xc], 0x20000
je 0x52f96c
mov dword [esp + 0x4c], 1
mov ebp, dword [esp + 0x4c]
jmp 0x52faea
mov eax, dword [esp + 0x28]
test eax, eax
je 0x52f9d5
lea ecx, [esp + 0x18]
push ecx
call fcn.00554c20
mov ecx, dword [eax]
add esp, 4
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x3c]
add edi, eax
mov eax, dword [esp + 0x40]
add ecx, edi
add eax, ebp
mov dword [esp + 0xa4], ecx
lea ecx, [esp + 0x9c]
add edx, eax
push ecx
mov ecx, dword [esp + 0x2c]
push esi
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa8], eax
mov dword [esp + 0xb0], edx
call fcn.00516050
mov dword [esp + 0x4c], 1
mov ebp, dword [esp + 0x4c]
jmp 0x52faea
mov eax, dword [esp + 0x14]
test eax, eax
je 0x52f9ef
mov eax, dword [esp + 0xd0]
test eax, eax
je 0x52f9ef
mov ecx, 1
jmp 0x52f9f1
xor ecx, ecx
mov eax, dword [ebx + 4]
test eax, eax
je 0x52f9fd
mov eax, dword [ebx + 0x40]
jmp 0x52fa00
mov eax, dword [ebx + 0x3c]
mov edx, dword [esp + 0x38]
push 0
push ecx
mov ecx, dword [esp + 0x44]
push edx
push eax
mov eax, dword [esp + 0x50]
add edi, ecx
mov ecx, dword [esp + 0xd4]
add eax, ebp
push eax
push edi
push esi
call fcn.00526ac0
mov dword [esp + 0x4c], 1
mov ebp, dword [esp + 0x4c]
jmp 0x52faea
mov ecx, dword [ebx + 0x7c]
cmp ecx, ebp
jne 0x52fa70
call fcn.005137f4
cmp eax, ebp
je 0x52fa5d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
push eax
mov eax, dword [0x570b50]
push eax
call fcn.0054d2b4
add esp, 8
jmp 0x52fa75
xor eax, eax
push eax
mov eax, dword [0x570b50]
push eax
call fcn.0054d2b4
add esp, 8
jmp 0x52fa75
call fcn.00513986
mov edi, eax
push edi
push 0x58fc40
call fcn.0054d2b4
add esp, 8
test eax, eax
je 0x52fa9c
mov edx, dword [eax]
lea ecx, [esp + 0x3c]
push ecx
push ebx
push esi
mov ecx, eax
call dword [edx + 0x110]
jmp 0x52fae4
push edi
push 0x5912d0
call fcn.0054d2b4
add esp, 8
test eax, eax
je 0x52fac1
mov edx, dword [eax]
lea ecx, [esp + 0x3c]
push ecx
push ebx
push esi
mov ecx, eax
call dword [edx + 0x104]
jmp 0x52fae4
push edi
push 0x5910e8
call fcn.0054d2b4
add esp, 8
test eax, eax
je 0x52faea
mov edx, dword [eax]
lea ecx, [esp + 0x3c]
push ecx
push ebx
push esi
mov ecx, eax
call dword [edx + 0x124]
mov ebp, eax
mov dword [esp + 0x4c], ebp
push 0
mov ecx, esi
call fcn.0051412a
mov edx, dword [esp + 0x44]
mov eax, dword [ebx + 0xc]
inc edx
and eax, 0x10000
mov dword [esp + 0x44], edx
je 0x52fbd9
test ebp, ebp
jne 0x52fbdd
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x52fb43
mov eax, dword [esp + 0x30]
test eax, eax
je 0x52fb43
mov ecx, dword [0x5c9f54]
mov eax, 0x5c9f50
neg eax
sbb eax, eax
lea edx, [esp + 0x3c]
and eax, ecx
push eax
mov eax, dword [esi + 4]
push edx
push eax
call dword [0x57148c]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1c], edx
xor ebp, ebp
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x48]
push 0xffffffffffffffff
lea edx, [esp + 0x1c]
push ebp
push edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
call dword [0x571454]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x58]
sub eax, edi
mov edi, dword [esp + 0x1c]
sub eax, edi
mov dword [esp + 0x30], ebp
cdq
sub eax, edx
mov dword [esp + 0x34], ebp
mov ecx, eax
mov eax, dword [esp + 0x20]
sar ecx, 1
add ecx, edi
mov edi, dword [esp + 0x54]
sub eax, edi
mov edi, dword [esp + 0x18]
sub eax, edi
mov dword [esp + 0x2c], ecx
cdq
sub eax, edx
lea ecx, [esp + 0x30]
sar eax, 1
add eax, edi
lea edx, [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0xc]
and eax, 0x40000
push ecx
or eax, 0x180000
push edx
shr eax, 0x12
push eax
push esi
call fcn.0053bf90
add esp, 0x10
jmp 0x52fc02
test ebp, ebp
je 0x52fc1b
mov ecx, dword [esp + 0xcc]
test ecx, ecx
je 0x52fbfa
test eax, eax
jne 0x52fbfa
mov eax, dword [0x5c9f2c]
mov ecx, dword [0x5c9f30]
push eax
jmp 0x52fc0e
test ebp, ebp
je 0x52fc1b
test eax, eax
je 0x52fc1b
mov eax, dword [0x5c9f30]
mov ecx, dword [0x5c9f2c]
push eax
lea edx, [esp + 0x74]
push ecx
push edx
mov ecx, esi
call fcn.00513bcc
mov eax, dword [esp + 0x4c]
or ebp, 0xffffffff
test eax, eax
jne 0x52fd47
mov eax, dword [ebx + 8]
cmp eax, 0xf060
ja 0x52fc7a
je 0x52fc68
sub eax, 0xf020
je 0x52fc56
sub eax, 0x10
jne 0x52fd47
mov edx, dword [esp + 0x14]
xor eax, eax
test edx, edx
setne al
add eax, 0xe
jmp 0x52fc93
mov edx, dword [esp + 0x14]
xor ecx, ecx
test edx, edx
setne cl
add ecx, 8
mov ebp, ecx
jmp 0x52fc95
mov ecx, dword [esp + 0x14]
xor edx, edx
test ecx, ecx
setne dl
add edx, 0xc
mov ebp, edx
jmp 0x52fc95
cmp eax, 0xf120
jne 0x52fd47
mov edx, dword [esp + 0x14]
xor eax, eax
test edx, edx
setne al
add eax, 0xa
mov ebp, eax
cmp ebp, 0xffffffff
je 0x52fd47
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x48]
push 0xfffffffffffffffe
lea edx, [esp + 0x1c]
push 0xfffffffffffffffe
push edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
call dword [0x571454]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x58]
sub eax, edi
mov edi, dword [esp + 0x1c]
sub eax, edi
cdq
sub eax, edx
mov ecx, eax
mov eax, dword [esp + 0x20]
sar ecx, 1
add ecx, edi
mov edi, dword [esp + 0x54]
sub eax, edi
mov edi, dword [esp + 0x18]
sub eax, edi
mov dword [esp + 0x2c], ecx
cdq
sub eax, edx
lea ecx, [esp + 0x28]
sar eax, 1
add eax, edi
xor edi, edi
mov dword [esp + 0x28], eax
lea eax, [esp + 0x30]
push eax
push ecx
push ebp
push esi
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
call fcn.0053bf90
mov eax, dword [esp + 0xdc]
add esp, 0x10
cmp eax, edi
je 0x52fd47
mov edx, dword [0x5c9f2c]
mov eax, dword [0x5c9f30]
push edx
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
call fcn.00513bcc
mov ecx, dword [esp + 0xc0]
mov edi, dword [esp + 0xcc]
mov edx, ecx
test edi, edi
mov eax, dword [edx]
mov dword [esp + 0x60], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x64], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x78]
mov edx, dword [edx + 0xc]
mov dword [esp + 0x6c], edx
lea edx, [eax + 2]
mov dword [esp + 0x60], edx
je 0x52fe0d
mov edi, dword [esp + 0xc8]
test edi, edi
jne 0x52fe0d
mov edi, dword [esp + 0x70]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x74]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x1c], edi
test eax, 0x10000
jne 0x52fdc3
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x52fdc3
cmp ebp, 0xffffffff
je 0x52fdc8
dec edx
mov dword [esp + 0x18], edx
mov ecx, dword [ecx + 8]
mov eax, 0x5c9f58
dec ecx
lea edx, [esp + 0x18]
neg eax
mov dword [esp + 0x20], ecx
mov ecx, dword [0x5c9f5c]
sbb eax, eax
and eax, ecx
push eax
mov eax, dword [esi + 4]
push edx
push eax
call dword [0x57148c]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x52fe01
mov ecx, dword [0x5c9f28]
jmp 0x52fe26
mov edx, dword [0x5c9f4c]
mov dword [esp + 0x28], edx
jmp 0x52fe2a
mov eax, dword [esp + 0x14]
test eax, eax
je 0x52fe20
mov eax, dword [0x5c9f44]
mov dword [esp + 0x28], eax
jmp 0x52fe2a
mov ecx, dword [0x5c9f34]
mov dword [esp + 0x28], ecx
lea edi, [ebx + 0x10]
lea ecx, [esp + 0x10]
push edi
call fcn.00513416
lea ecx, [esp + 0x5c]
mov byte [esp + 0xb4], 1
call fcn.005132d2
push 9
mov ecx, edi
mov byte [esp + 0xb8], 2
call fcn.0051381e
mov ebp, eax
test ebp, ebp
jl 0x52fec2
lea edx, [esp + 0x30]
push ebp
push edx
lea ecx, [esp + 0x18]
call fcn.005133c8
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0xb8], 3
call fcn.005133d4
lea ecx, [esp + 0x30]
mov byte [esp + 0xb4], 2
call fcn.005132cc
inc ebp
lea eax, [esp + 0x30]
push ebp
push eax
mov ecx, edi
call fcn.00513410
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0xb8], 4
call fcn.005133d4
lea ecx, [esp + 0x30]
mov byte [esp + 0xb4], 2
call fcn.005132cc
mov ecx, dword [esp + 0x60]
mov eax, dword [ebx + 0x20]
add ecx, 3
test eax, eax
mov dword [esp + 0x60], ecx
jne 0x52ffb8
push 0x5b4828
lea ecx, [esp + 0x34]
call fcn.005133da
mov ecx, dword [esp + 0x10]
mov byte [esp + 0xb4], 5
mov eax, dword [ecx - 8]
test eax, eax
jle 0x52ff92
mov edi, dword [0x5700dc]
lea edx, [esp + 0x30]
lea eax, [esp + 0x10]
push edx
lea ecx, [esp + 0x3c]
push eax
push ecx
call fcn.0051393e
mov eax, dword [eax]
lea edx, [esp + 0x18]
push edx
mov ecx, dword [eax - 8]
push ecx
push eax
mov eax, dword [esi + 8]
push eax
call edi
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x60]
mov edx, dword [esp + 0x18]
sub ecx, ebx
cmp edx, ecx
lea ecx, [esp + 0x38]
setg bl
call fcn.005132cc
test bl, bl
je 0x52ff92
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x10]
mov eax, dword [edx - 8]
dec eax
push eax
lea eax, [esp + 0x50]
push eax
call fcn.005133c8
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0xb8], 6
call fcn.005133d4
lea ecx, [esp + 0x4c]
mov byte [esp + 0xb4], 5
call fcn.005132cc
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 8]
test eax, eax
jg 0x52ff03
lea edx, [esp + 0x30]
lea ecx, [esp + 0x10]
push edx
call fcn.005134be
lea ecx, [esp + 0x30]
mov byte [esp + 0xb4], 2
call fcn.005132cc
mov ebx, dword [esp + 0x8c]
mov eax, dword [esp + 0x14]
mov edi, dword [0x57143c]
test eax, eax
je 0x530021
mov eax, dword [esp + 0xcc]
test eax, eax
jne 0x530021
mov ecx, dword [0x5c9f30]
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0x38]
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x6c]
push 1
lea eax, [esp + 0x1c]
push 1
push eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
call edi
mov eax, dword [esp + 0x10]
mov edx, dword [esi]
lea ebp, [esp + 0x18]
push 0x24
mov ecx, dword [eax - 8]
push ebp
push ecx
push eax
mov ecx, esi
call dword [edx + 0x70]
mov ecx, dword [esp + 0x28]
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0x38]
mov eax, dword [esp + 0x10]
mov edx, dword [esi]
lea ebp, [esp + 0x60]
push 0x24
mov ecx, dword [eax - 8]
push ebp
push ecx
push eax
mov ecx, esi
call dword [edx + 0x70]
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x530117
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x20], eax
sub eax, edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x6c]
sub eax, 3
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [esp + 0x24], ecx
je 0x5300f4
mov eax, dword [esp + 0xcc]
test eax, eax
jne 0x5300f4
mov eax, dword [0x5c9f30]
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x38]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x90], edx
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x24]
push 1
lea edx, [esp + 0x90]
push 1
push edx
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ecx
call edi
mov eax, dword [esp + 0x5c]
mov edx, dword [esi]
lea edi, [esp + 0x8c]
push 0x26
mov ecx, dword [eax - 8]
push edi
push ecx
push eax
mov ecx, esi
call dword [edx + 0x70]
mov ecx, dword [esp + 0x28]
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0x38]
mov eax, dword [esp + 0x5c]
mov edx, dword [esi]
lea edi, [esp + 0x18]
push 0x26
mov ecx, dword [eax - 8]
push edi
push ecx
push eax
mov ecx, esi
call dword [edx + 0x70]
cmp dword [ebx + 8], 0xffffffff
je 0x530132
mov eax, dword [ebx + 0x70]
test eax, eax
jne 0x530132
mov eax, dword [ebx + 0x90]
test eax, eax
je 0x5301dc
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov ecx, dword [eax]
mov ebp, dword [eax + 4]
mov ebx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x9c], ecx
sub eax, edi
mov ecx, ebx
sub eax, ebp
sub ecx, edx
cdq
sub eax, edx
mov edi, eax
mov eax, ebx
sub eax, dword [esp + 0x54]
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
sar edi, 1
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xcc]
add edi, ebp
test eax, eax
mov dword [esp + 0x90], edi
je 0x5301a7
mov eax, dword [esp + 0xc8]
test eax, eax
jne 0x5301a7
mov edx, dword [esp + 0x14]
xor eax, eax
test edx, edx
setne al
add eax, 4
jmp 0x5301b5
mov edx, dword [esp + 0x14]
xor eax, eax
test edx, edx
setne al
add eax, 2
lea edx, [esp + 0x54]
lea ecx, [esp + 0x8c]
push edx
push ecx
push eax
push esi
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
call fcn.0053bf90
add esp, 0x10
mov eax, dword [esp + 0x80]
test eax, eax
je 0x5301ef
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x30]
lea ecx, [esp + 0x5c]
mov byte [esp + 0xb4], 1
call fcn.005132cc
lea ecx, [esp + 0x10]
mov byte [esp + 0xb4], 0
call fcn.005132cc
mov dword [esp + 0x84], 0x573e88
lea ecx, [esp + 0x84]
mov dword [esp + 0xb4], 7
call fcn.00513b6c
mov ecx, dword [esp + 0xac]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xa8
ret 0x18