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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffb3c
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov esi, dword [ebp + 8]
lea edi, [ebp - 0x4c4]
mov byte [ebp - 0xd], 0
xor eax, eax
mov dword [ebp - 0x14], eax
mov byte [ebp - 0x490], 0
mov eax, 0x52f258
call fcn.00408154
mov ecx, eax
mov edx, 0x52f258
mov eax, dword [ebp + 0x14]
call fcn.00408354
test eax, eax
je 0x52e4e5
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0x14]
call fcn.00445be0
jmp 0x52e4c8
mov eax, 0x52f264
call fcn.00408154
mov ecx, eax
mov edx, 0x52f264
mov eax, dword [ebp + 0x14]
call fcn.00408354
test eax, eax
jne 0x52e4a2
cmp dword [ebp - 0x14], 0
jne 0x52e4a2
lea ecx, [ebp - 0x18]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0x14]
call fcn.00445cc8
mov dword [ebp - 0x14], eax
jmp 0x52e4c8
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0x14]
call fcn.00445ca0
test al, al
jne 0x52e4c8
cmp dword [ebp - 0x14], 0
je 0x52f248
lea eax, [ebp - 0x14]
call fcn.0040d7e8
jmp 0x52f248
mov eax, 0x52f258
call fcn.00408154
mov ecx, eax
mov edx, 0x52f258
mov eax, dword [ebp + 0x14]
call fcn.00408354
test eax, eax
jne 0x52e46c
cmp dword [ebp + 0xc], 0
je 0x52e4fa
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov edx, 0x30
call fcn.004032f4
mov ebx, dword [0x66acbc]
test ebx, ebx
je 0x52e51a
cmp byte [0x66acb8], 0
je 0x52e51a
mov eax, dword [ebx + 0x392c]
xor edx, edx
call fcn.0042d900
mov eax, dword [esi]
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x52e554
cmp dword [ebp - 8], 0
je 0x52e544
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x2800]
cmp eax, dword [ebp - 0x1c]
jne 0x52e544
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x2800], edx
mov eax, dword [ebp - 0x1c]
call fcn.00529f08
lea eax, [ebp - 0x1c]
call fcn.0040d7e8
xor eax, eax
mov dword [esi], eax
mov ecx, esi
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 8]
call fcn.0052e37c
test al, al
je 0x52f248
mov eax, dword [esi]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0x88], 0xffffffff
cmp dword [ebp + 0x10], 0
je 0x52e593
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x39310]
mov dword [ebp - 0x20], eax
jmp 0x52e59f
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x14e0]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0x14]
call fcn.00445bd8
test al, al
je 0x52f136
cmp dword [ebp + 0xc], 0
je 0x52e5c7
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
call fcn.004ec680
test al, al
jne 0x52e59f
mov ebx, dword [ebp + 0x14]
push 1
mov ecx, edi
mov edx, 0x52f26c
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52e5f9
lea edx, [esi + ebx]
lea eax, [ebp - 0x490]
mov ecx, 0x3ff
call fcn.0040d9cc
inc eax
mov dword [ebp - 0x18], eax
jmp 0x52e59f
push 0
mov ecx, edi
mov edx, 0x52f278
mov eax, ebx
call fcn.0040db64
test eax, eax
je 0x52e625
push 0
mov ecx, edi
mov edx, 0x52f28c
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52e780
mov ebx, dword [ebp - 0x1c]
cmp dword [edi + 4], 0
jne 0x52e635
cmp dword [edi], 0
jae 0x52e68a
jmp 0x52e637
jge 0x52e68a
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi]
mov edx, dword [edi + 4]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52e661
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi]
mov edx, dword [edi + 4]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
jmp 0x52e6b5
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi]
mov edx, dword [edi + 4]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi]
mov edx, dword [edi + 4]
call fcn.0040517c
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x50]
mov dword [ebx + 0x54], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebx + 0x58], eax
lea eax, [edi + 8]
cmp dword [eax + 4], 0
jne 0x52e6d1
cmp dword [eax], 0
jae 0x52e72c
jmp 0x52e6d3
jge 0x52e72c
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52e700
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
jmp 0x52e75d
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
mov eax, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
sub eax, 1
sbb edx, 0
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x38]
mov dword [ebx + 0x5c], eax
mov eax, dword [ebp - 0x34]
mov dword [ebx + 0x60], eax
jmp 0x52e59f
push 1
mov ecx, edi
mov edx, 0x52f2a0
mov eax, ebx
call fcn.0040db64
test eax, eax
jle 0x52e7d9
mov ecx, dword [ebp - 0x1c]
mov eax, dword [edi]
mov dword [ecx + 0x28], eax
lea eax, [edi + 8]
mov edx, dword [eax]
mov dword [ecx + 0x2c], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0x30], edx
lea eax, [edi + 0x10]
mov edx, dword [eax]
mov dword [ecx + 0x3c], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0x40], edx
lea eax, [edi + 0x18]
mov edx, dword [eax]
mov dword [ecx + 0x44], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0x48], edx
lea eax, [edi + 0x20]
mov edx, dword [eax]
mov dword [ecx + 0x34], edx
mov edx, dword [eax + 4]
mov dword [ecx + 0x38], edx
jmp 0x52e59f
push 0
mov ecx, edi
mov edx, 0x52f2e4
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52ea01
mov eax, dword [0x66d5d0]
mov eax, dword [eax]
cmp eax, dword [edi]
jle 0x52ea01
mov esi, dword [ebp - 0x1c]
mov ebx, dword [edi]
mov edx, ebx
mov eax, dword [ebp - 0x1c]
call fcn.0052e3d8
lea eax, [ebx + ebx*8]
mov edx, dword [esi + 0x78]
lea eax, [edx + eax*8]
mov ebx, eax
movzx eax, byte [edi + 4]
mov byte [ebx + 0x38], al
mov eax, dword [edi + 8]
cdq
cmp edx, 0
jne 0x52e831
cmp eax, 0
jae 0x52e884
jmp 0x52e833
jge 0x52e884
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi + 8]
cdq
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52e85c
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi + 8]
cdq
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], edx
jmp 0x52e8ad
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi + 8]
cdq
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [edi + 8]
cdq
call fcn.0040517c
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x60]
mov dword [ebx], eax
lea eax, [edi + 0xc]
cmp dword [eax + 4], 0
jne 0x52e8c2
cmp dword [eax], 0
jae 0x52e91d
jmp 0x52e8c4
jge 0x52e91d
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0xc]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52e8f1
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0xc]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], edx
jmp 0x52e94e
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0xc]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0xc]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], edx
mov eax, dword [ebp - 0x68]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x64]
mov dword [ebx + 8], eax
lea eax, [edi + 0x14]
cmp dword [eax + 4], 0
jne 0x52e96a
cmp dword [eax], 0
jae 0x52e9c5
jmp 0x52e96c
jge 0x52e9c5
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52e999
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], edx
jmp 0x52e9f6
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x14]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], edx
mov eax, dword [ebp - 0x70]
mov dword [ebx + 0x44], eax
jmp 0x52e59f
lea eax, [edi + 0x28]
mov dword [eax], 0xffffffff
mov dword [eax + 4], 0xffffffff
push 0
mov ecx, edi
mov edx, 0x52f314
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52ea30
mov eax, dword [0x66d5d0]
mov eax, dword [eax]
cmp eax, dword [edi]
jg 0x52ea57
push 0
mov ecx, edi
mov edx, 0x52f344
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52edec
mov eax, dword [0x66d5d0]
mov eax, dword [eax]
cmp eax, dword [edi]
jle 0x52edec
mov esi, dword [ebp - 0x1c]
mov ebx, dword [edi]
mov edx, ebx
mov eax, dword [ebp - 0x1c]
call fcn.0052e3d8
lea eax, [ebx + ebx*8]
mov edx, dword [esi + 0x78]
lea eax, [edx + eax*8]
mov ebx, eax
mov eax, dword [edi + 4]
cdq
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x18], edx
lea eax, [edi + 8]
cmp dword [eax + 4], 0xffffffff
jne 0x52ea9c
cmp dword [eax], 0xffffffff
jne 0x52ea9c
mov dword [ebx + 0x28], 0xffffffff
mov dword [ebx + 0x2c], 0xffffffff
jmp 0x52eb44
lea eax, [edi + 8]
cmp dword [eax + 4], 0
jne 0x52eaac
cmp dword [eax], 0
jae 0x52eb07
jmp 0x52eaae
jge 0x52eb07
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52eadb
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], edx
jmp 0x52eb38
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], edx
mov eax, dword [ebp - 0x78]
mov dword [ebx + 0x28], eax
mov eax, dword [ebp - 0x74]
mov dword [ebx + 0x2c], eax
lea eax, [edi + 0x10]
cmp dword [eax + 4], 0xffffffff
jne 0x52eb65
cmp dword [eax], 0xffffffff
jne 0x52eb65
mov dword [ebx + 0x1c], 0xffffffff
mov dword [ebx + 0x20], 0xffffffff
jmp 0x52ec0d
lea eax, [edi + 0x10]
cmp dword [eax + 4], 0
jne 0x52eb75
cmp dword [eax], 0
jae 0x52ebd0
jmp 0x52eb77
jge 0x52ebd0
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x10]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52eba4
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x10]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], edx
jmp 0x52ec01
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x10]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x10]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], edx
mov eax, dword [ebp - 0x80]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebx + 0x20], eax
lea eax, [edi + 0x18]
cmp dword [eax + 4], 0xffffffff
jne 0x52ec2e
cmp dword [eax], 0xffffffff
jne 0x52ec2e
mov dword [ebx + 0xc], 0xffffffff
mov dword [ebx + 0x10], 0xffffffff
jmp 0x52ece8
lea eax, [edi + 0x18]
cmp dword [eax + 4], 0
jne 0x52ec3e
cmp dword [eax], 0
jae 0x52ec9f
jmp 0x52ec40
jge 0x52ec9f
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x18]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52ec6d
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x18]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], edx
jmp 0x52ecd6
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x18]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x18]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], edx
mov eax, dword [ebp - 0x88]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x84]
mov dword [ebx + 0x10], eax
mov eax, dword [edi + 0x20]
mov dword [ebx + 0x3c], eax
test byte [edi + 0x24], 1
setne al
mov byte [ebx + 0x24], al
test byte [edi + 0x24], 2
setne al
mov byte [ebx + 0x25], al
test byte [edi + 0x24], 4
setne al
mov byte [ebx + 0x40], al
lea eax, [edi + 0x28]
cmp dword [eax + 4], 0xffffffff
jne 0x52ed2d
cmp dword [eax], 0xffffffff
jne 0x52ed2d
mov dword [ebx + 0x30], 0xffffffff
mov dword [ebx + 0x34], 0xffffffff
jmp 0x52e59f
lea eax, [edi + 0x28]
cmp dword [eax + 4], 0
jne 0x52ed3d
cmp dword [eax], 0
jae 0x52ed9e
jmp 0x52ed3f
jge 0x52ed9e
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [eax]
neg eax
adc edx, 0
neg edx
call fcn.00405210
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x52ed6c
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [eax]
push edx
push eax
mov eax, dword [ebp - 0x2c]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
call fcn.0040517c
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], edx
jmp 0x52edd5
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.00405210
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
push edx
push eax
lea eax, [edi + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [eax]
call fcn.0040517c
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], edx
mov eax, dword [ebp - 0x90]
mov dword [ebx + 0x30], eax
mov eax, dword [ebp - 0x8c]
mov dword [ebx + 0x34], eax
jmp 0x52e59f
push 0
mov ecx, edi
mov edx, 0x52f370
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52ee10
mov eax, dword [ebp - 0x1c]
mov edx, dword [edi]
mov dword [eax + 0x88], edx
jmp 0x52e59f
push 0
mov ecx, edi
mov edx, 0x52f384
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52ee4b
mov eax, dword [edi]
test eax, eax
je 0x52ee3d
cmp eax, 1
je 0x52ee3d
cmp eax, 2
je 0x52ee3d
cmp eax, 3
jne 0x52e59f
mov edx, dword [ebp - 0x1c]
mov dword [edx + 0x84], eax
jmp 0x52e59f
push 1
mov ecx, edi
mov edx, 0x52f398
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52efdf
mov eax, dword [ebp - 0x1c]
add eax, 0x14
mov dword [ebp - 0x3c], eax
mov eax, dword [edi]
test eax, eax
jle 0x52e59f
add ebx, esi
cmp eax, 0x400000
jle 0x52ee87
mov dword [edi], 0x400000
mov eax, dword [edi]
add eax, 0x400
dec eax
test eax, eax
jns 0x52ee98
add eax, 0x3ff
sar eax, 0xa
shl eax, 0xa
mov edx, eax
add edx, edx
add edx, edx
add edx, edx
mov eax, dword [ebp - 0x3c]
add eax, 8
call fcn.0040d7f8
test al, al
je 0x52ef07
mov eax, dword [edi]
add eax, 0x400
dec eax
test eax, eax
jns 0x52eec6
add eax, 0x3ff
sar eax, 0xa
shl eax, 0xa
mov edx, eax
add edx, edx
add edx, edx
add edx, edx
mov eax, dword [ebp - 0x3c]
add eax, 0xc
call fcn.0040d7f8
test al, al
je 0x52ef07
mov eax, dword [edi]
add eax, 0x400
dec eax
test eax, eax
jns 0x52eef4
add eax, 0x3ff
sar eax, 0xa
shl eax, 0xa
mov edx, dword [ebp - 0x3c]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [edi]
mov dword [eax], edx
xor eax, eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x3c]
cmp dword [eax + 8], 0
je 0x52efc4
mov eax, dword [ebp - 0x3c]
cmp dword [eax + 0xc], 0
je 0x52efc4
jmp 0x52efb6
cmp byte [ebx], 0x5c
jne 0x52ef4f
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0x14]
call fcn.00445bd8
test al, al
jne 0x52ef4c
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x28]
mov dword [eax], edx
jmp 0x52f136
mov ebx, dword [ebp + 0x14]
push 1
mov ecx, edi
mov edx, 0x52f3a8
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52efc4
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x28]
mov ecx, dword [edi]
mov dword [eax + edx*8], ecx
mov ecx, dword [edi + 4]
mov dword [eax + edx*8 + 4], ecx
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 0x28]
mov ecx, dword [edi + 8]
mov dword [eax + edx*8], ecx
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 0x28]
mov ecx, dword [edi + 0xc]
mov dword [eax + edx*8 + 4], ecx
inc dword [ebp - 0x28]
add ebx, esi
push 1
mov ecx, edi
mov edx, 0x52f3b4
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52efc4
add ebx, esi
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x28]
jg 0x52ef2b
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x28]
jle 0x52e59f
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x28]
mov dword [eax], edx
jmp 0x52e59f
push 1
mov ecx, edi
mov edx, 0x52f3b8
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52f10e
mov eax, dword [ebp - 0x1c]
add eax, 4
mov dword [ebp - 0x40], eax
mov eax, dword [edi]
test eax, eax
jle 0x52e59f
add ebx, esi
cmp eax, 0x400000
jle 0x52f01b
mov dword [edi], 0x400000
mov eax, dword [edi]
add eax, 0x400
dec eax
test eax, eax
jns 0x52f02c
add eax, 0x3ff
sar eax, 0xa
shl eax, 0xa
mov edx, eax
add edx, edx
add edx, edx
add edx, edx
mov eax, dword [ebp - 0x40]
add eax, 8
call fcn.0040d7f8
test al, al
je 0x52f06d
mov eax, dword [edi]
add eax, 0x400
dec eax
test eax, eax
jns 0x52f05a
add eax, 0x3ff
sar eax, 0xa
shl eax, 0xa
mov edx, dword [ebp - 0x40]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x40]
mov edx, dword [edi]
mov dword [eax], edx
xor eax, eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x40]
cmp dword [eax + 8], 0
je 0x52f0f3
jmp 0x52f0e9
cmp byte [ebx], 0x5c
jne 0x52f0a1
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 0x14]
call fcn.00445bd8
test al, al
jne 0x52f09e
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x28]
mov dword [eax], edx
jmp 0x52f136
mov ebx, dword [ebp + 0x14]
push 1
mov ecx, edi
mov edx, 0x52f3c8
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52f0f3
mov eax, dword [ebp - 0x40]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x28]
mov ecx, dword [edi]
mov dword [eax + edx*8], ecx
mov ecx, dword [edi + 4]
mov dword [eax + edx*8 + 4], ecx
inc dword [ebp - 0x28]
add ebx, esi
push 1
mov ecx, edi
mov edx, 0x52f3b4
mov eax, ebx
call fcn.0040db64
mov esi, eax
test esi, esi
jle 0x52f0f3
add ebx, esi
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x28]
jg 0x52f07d
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x28]
jle 0x52e59f
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x28]
mov dword [eax], edx
jmp 0x52e59f
push 0
mov ecx, edi
mov edx, 0x52f3cc
mov eax, ebx
call fcn.0040db64
test eax, eax
jne 0x52e59f
mov eax, dword [ebp - 0x1c]
mov edx, dword [edi]
mov dword [eax + 0x90], edx
jmp 0x52e59f
mov eax, dword [ebp - 0x1c]
call fcn.0052d318
mov eax, dword [ebp - 0x1c]
call fcn.0052c5c8
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x88]
cmp edx, dword [eax + 0x70]
jl 0x52f15e
mov dword [eax + 0x88], 0xffffffff
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x70]
mov edx, dword [ebp - 0x1c]
mov dword [edx + 0x80], eax
mov dl, 1
mov eax, dword [ebp - 0x1c]
call fcn.0052a26c
mov ebx, dword [0x66acbc]
test ebx, ebx
je 0x52f18b
mov eax, ebx
mov edx, dword [ebp - 0x1c]
call fcn.00530930
test ebx, ebx
je 0x52f1f6
cmp byte [0x66acb8], 0
je 0x52f1f6
mov dword [ebp - 0x44], ebx
mov eax, dword [ebp - 0x44]
call fcn.00530f28
mov eax, dword [ebp - 0x44]
call fcn.00531000
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x80]
mov eax, dword [ebx + 0x392c]
call fcn.0042d900
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x84]
mov eax, dword [ebx + 0x392c]
mov ecx, dword [eax + 0x1c]
call dword [ecx + 0xb0]
mov eax, dword [ebp - 0x1c]
cmp dword [eax + 0x70], 0
jle 0x52f1f6
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x8c]
mov eax, dword [ebx + 0x392c]
xor ecx, ecx
call fcn.0042d654
cmp dword [ebp + 0x10], 0
jne 0x52f236
lea ecx, [ebp - 0x490]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
call fcn.0049ae58
xor al, 1
mov edx, dword [ebp - 0x1c]
mov byte [edx + 0x94], al
mov eax, dword [ebp - 0x1c]
cmp byte [eax + 0x94], 0
je 0x52f236
mov ecx, 1
mov edx, 0x773
mov eax, dword [ebp - 4]
call fcn.0043e1d4
cmp dword [ebp - 0x14], 0
je 0x52f244
lea eax, [ebp - 0x14]
call fcn.0040d7e8
mov byte [ebp - 0xd], 1
movzx eax, byte [ebp - 0xd]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10