Function at 0x52a230
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x78
mov eax, dword [0x58cb30]
xor eax, esp
mov dword [esp + 0x74], eax
push ebx
mov ebx, ecx
mov dword [esp + 0x1c], 0
mov eax, dword [ebx + 0x6496f8]
push ebp
push esi
lea ebp, [ebx + 0x6496f8]
mov dword [esp + 0x44], ebx
mov esi, dword [eax + 4]
mov ecx, esi
push edi
lea edi, [ebx + 0x64b7d0]
mov dword [esp + 0x2c], 0
push 0
push dword [edi]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x54], ebp
mov dword [esp + 0x18], edi
call dword [0x55770c]
mov ecx, ebp
call esi
test al, al
jne 0x52a2b5
push dword [edi]
mov ecx, 0x5d381c
call fcn.004880a0
pop edi
pop esi
pop ebp
mov eax, 0x12
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
mov ecx, ebp
call fcn.0048f7c0
test edx, edx
jl 0x52a2d3
jg 0x52a2c9
cmp eax, 0x20000
jbe 0x52a2d3
sub eax, 0x20000
sbb edx, 0
jmp 0x52a2d7
xor eax, eax
xor edx, edx
mov esi, dword [ebp]
push 0
push edx
push eax
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e114
push ebp
mov ecx, ebx
call fcn.00527580
mov esi, dword [ebp]
test eax, eax
jne 0x52a317
mov esi, dword [esi + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push dword [edi]
jmp 0x52b8c4
mov esi, dword [esi + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e114
mov edi, eax
mov dword [esp + 0x18], edx
push ebp
mov ecx, ebx
mov dword [esp + 0x28], edi
call fcn.00527580
test eax, eax
je 0x52a36e
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e114
push ebp
mov ecx, ebx
mov dword [esp + 0x28], eax
mov edi, eax
mov dword [esp + 0x1c], edx
call fcn.00527580
test eax, eax
jne 0x52a341
mov esi, dword [ebp]
push 0
push dword [esp + 0x18]
mov esi, dword [esi + 0x10]
mov ecx, esi
push edi
call dword [0x55770c]
mov ecx, ebp
call esi
mov eax, dword [ebp]
lea ecx, [esp + 0x50]
push 0x12
push ecx
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
movzx eax, byte [esp + 0x51]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x50]
or ecx, eax
mov dword [ebx + 0x64b7e0], ecx
lea eax, [ecx + 1]
mov dword [ebx + 0x64b7dc], eax
movzx eax, byte [esp + 0x53]
shl ax, 8
movzx edi, ax
movzx eax, byte [esp + 0x52]
or edi, eax
movzx eax, byte [esp + 0x5f]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x5e]
or ecx, eax
movzx eax, byte [esp + 0x5d]
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x5c]
or ecx, eax
movzx eax, byte [esp + 0x56]
mov dword [esp + 0x18], ecx
movzx ecx, byte [esp + 0x57]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esp + 0x61]
cdq
mov dword [esp + 0x30], eax
movzx eax, byte [esp + 0x5b]
shl ax, 8
movzx esi, ax
movzx eax, byte [esp + 0x5a]
or esi, eax
shl cx, 8
movzx eax, byte [esp + 0x59]
shl ax, 8
shl esi, 0x10
movzx eax, ax
or esi, eax
mov dword [esp + 0x24], edx
movzx eax, byte [esp + 0x58]
or esi, eax
movzx eax, byte [esp + 0x60]
or cx, ax
mov dword [esp + 0x1c], esi
mov word [ebx + 0x64b860], cx
je 0x52a4e6
movzx eax, cx
inc eax
push eax
call fcn.005398b8
mov edx, eax
add esp, 4
mov dword [ebx + 0x64b864], edx
test edx, edx
je 0x52adb4
mov ecx, dword [ebp]
movzx eax, word [ebx + 0x64b860]
push eax
push edx
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
movzx edx, word [ebx + 0x64b860]
mov ecx, dword [ebx + 0x64b864]
cmp eax, edx
je 0x52a4de
push ecx
call fcn.0053867f
add esp, 4
mov dword [ebx + 0x64b864], 0
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
mov esi, dword [esp + 0x1c]
mov byte [edx + ecx], 0
mov eax, dword [esp + 0x30]
or eax, dword [esp + 0x24]
jne 0x52a517
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
cmp dword [ebx + 0x64b7dc], 1
je 0x52a56b
cmp dword [ebx + 0x6486b0], 0
jne 0x52b8ce
push 0x558930
push dword [ebx + 0x64b7ac]
call fcn.004a18a0
test al, al
jne 0x52a56b
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
pop edi
pop esi
pop ebp
mov eax, 0x10
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
mov eax, dword [ebx + 0x64b7dc]
cmp eax, 1
je 0x52a603
mov ecx, dword [ebx + 0x64b7d4]
mov eax, dword [ebx + 0x64b7d0]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x52a5ac
test dx, dx
je 0x52a5a8
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x52a5ac
add eax, 4
add ecx, 4
test dx, dx
jne 0x52a586
xor eax, eax
jmp 0x52a5b1
sbb eax, eax
or eax, 1
test eax, eax
jne 0x52a5fd
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push dword [esp + 0x10]
xor eax, eax
cmp word [0x5b230a], 0x53
setne al
dec eax
and eax, 0x1c
add eax, 0x2e
push eax
call fcn.00468dc0
pop edi
pop esi
pop ebp
mov eax, 0xc
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
mov eax, dword [ebx + 0x64b7dc]
cmp dword [ebx + 0x6486a8], 1
mov dword [ebx + 0x64b840], 0
mov dword [ebx + 0x64b848], 0
mov dword [ebx + 0x64b84c], 0
jne 0x52a62f
cmp eax, 1
je 0x52a63c
cmp dword [ebx + 0x6486b0], 0
je 0x52a8c6
cmp dword [esp + 0x18], 0xffffffff
je 0x52a64e
cmp esi, 0xffffffff
jne 0x52a856
xor edx, edx
mov ecx, dword [esp + 0x20]
mov esi, dword [ebp]
sub ecx, 0x18
mov eax, dword [esp + 0x14]
push 0
sbb eax, 0
mov esi, dword [esi + 0x10]
push eax
push ecx
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e12c
push ebp
mov ecx, ebx
call fcn.00527220
test eax, eax
je 0x52a8c6
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
sub eax, 4
mov dword [esp + 0x38], eax
mov eax, dword [ebp]
sbb edx, 0
push 0x10
mov dword [esp + 0x38], edx
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
cmp eax, 0x10
je 0x52a6ff
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov eax, dword [esp + 0x10]
mov ecx, 0x5d381c
push dword [eax]
call fcn.004882e0
pop edi
pop esi
pop ebp
mov eax, 0xb
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
push 0x56e114
push ebp
mov ecx, ebx
call fcn.00527220
test eax, eax
je 0x52a6c5
movzx eax, byte [esp + 0x5b]
xor esi, esi
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x5a]
or edx, eax
movzx eax, byte [esp + 0x59]
shl ax, 8
movzx eax, ax
shl edx, 0x10
or edx, eax
movzx eax, byte [esp + 0x58]
or edx, eax
movzx eax, byte [esp + 0x57]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x56]
or ecx, eax
mov dword [esp + 0x3c], edx
movzx eax, byte [esp + 0x55]
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x54]
or ecx, eax
movzx eax, byte [esp + 0x5f]
shl ax, 8
or esi, ecx
movzx ecx, ax
movzx eax, byte [esp + 0x5e]
or ecx, eax
mov dword [esp + 0x1c], esi
movzx eax, byte [esp + 0x5d]
shl ax, 8
shl ecx, 0x10
movzx eax, ax
or ecx, eax
movzx eax, byte [esp + 0x5c]
or ecx, eax
mov dword [ebx + 0x64b7dc], ecx
cmp ecx, 1
jne 0x52b8ce
mov esi, dword [ebp]
push 0
push edx
push dword [esp + 0x24]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e124
push ebp
mov ecx, ebx
call fcn.00527220
test eax, eax
jne 0x52a8c6
mov esi, dword [ebp]
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x3c]
mov esi, dword [esi + 0x10]
sub eax, 0x50
sbb ecx, 0
push ecx
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push ebp
mov ecx, ebx
call fcn.00527440
test eax, eax
je 0x52abd2
push 0x56e124
lea eax, [ebx + 0x1f0]
mov ecx, ebx
push eax
call fcn.00527630
test eax, eax
je 0x52abd2
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov esi, 0xfffffffc
mov ecx, 0xffffffff
sub esi, dword [esp + 0x1c]
sbb ecx, dword [esp + 0x3c]
add eax, esi
mov dword [esp + 0x28], eax
adc edx, ecx
jmp 0x52a8c2
mov ecx, dword [esp + 0x20]
xor edx, edx
sub ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov esi, dword [ebp]
sbb eax, edx
sub ecx, 0x50
push edx
sbb eax, edx
mov esi, dword [esi + 0x10]
push eax
push ecx
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e134
push ebp
mov ecx, ebx
call fcn.00527580
test eax, eax
je 0x52abd2
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov esi, eax
mov ecx, 0xfffffffc
sub ecx, dword [esp + 0x18]
mov eax, 0xffffffff
sbb eax, 0
add esi, ecx
mov dword [esp + 0x28], esi
adc edx, eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x20]
mov esi, dword [ebp]
sub eax, 0x18
mov ecx, dword [esp + 0x14]
push 0
sbb ecx, 0
mov esi, dword [esi + 0x10]
push ecx
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e12c
push ebp
mov ecx, ebx
call fcn.00527220
test eax, eax
je 0x52ad1a
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov ecx, dword [ebp]
sub eax, 4
mov dword [esp + 0x38], eax
lea eax, [esp + 0x50]
push 0x10
sbb edx, 0
mov esi, dword [ecx + 0xc]
mov ecx, esi
push eax
mov dword [esp + 0x3c], edx
call dword [0x55770c]
mov ecx, ebp
call esi
cmp eax, 0x10
jne 0x52a6c5
push 0x56e114
push ebp
mov ecx, ebx
call fcn.00527220
test eax, eax
je 0x52a6c5
movzx eax, byte [esp + 0x53]
xor esi, esi
shl ax, 8
movzx edi, ax
movzx eax, byte [esp + 0x52]
or edi, eax
movzx eax, byte [esp + 0x51]
shl ax, 8
movzx eax, ax
shl edi, 0x10
or edi, eax
movzx eax, byte [esp + 0x50]
or edi, eax
movzx eax, byte [esp + 0x5b]
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x5a]
or edx, eax
movzx eax, byte [esp + 0x59]
shl ax, 8
movzx eax, ax
shl edx, 0x10
or edx, eax
movzx eax, byte [esp + 0x58]
or edx, eax
movzx eax, byte [esp + 0x57]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x56]
or ecx, eax
movzx eax, byte [esp + 0x55]
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x54]
or ecx, eax
movzx eax, byte [esp + 0x5f]
or esi, ecx
add esi, dword [esp + 0x28]
mov dword [esp + 0x3c], esi
adc edx, dword [esp + 0x2c]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x5e]
or ecx, eax
mov dword [esp + 0x30], edx
movzx eax, byte [esp + 0x5d]
shl ax, 8
shl ecx, 0x10
movzx eax, ax
or ecx, eax
movzx eax, byte [esp + 0x5c]
or ecx, eax
mov dword [ebx + 0x64b7dc], ecx
lea eax, [ecx - 1]
mov dword [ebx + 0x64b7e0], eax
cmp edi, eax
je 0x52aac9
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push edi
push dword [ebx + 0x64b7d0]
mov ecx, ebx
call fcn.00522960
mov ecx, dword [ebp]
push 0
push eax
mov dword [esp + 0x2c], eax
mov esi, dword [ecx + 4]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
test al, al
jne 0x52aab9
lea ebx, [ebx]
push edi
mov ecx, ebx
call fcn.00521410
test eax, eax
jne 0x52b8f1
push dword [esp + 0x24]
call fcn.0053867f
add esp, 4
mov ecx, ebx
push edi
push dword [ebx + 0x64b7d0]
call fcn.00522960
mov ecx, eax
mov eax, dword [ebp]
push 0
mov dword [esp + 0x28], ecx
push ecx
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
test al, al
je 0x52aa70
push dword [esp + 0x24]
call fcn.0053867f
mov edx, dword [esp + 0x34]
add esp, 4
mov esi, dword [ebp]
push 0
mov dword [ebx + 0x64b7e0], edi
mov edi, dword [esp + 0x40]
mov esi, dword [esi + 0x10]
mov ecx, esi
push edx
push edi
call dword [0x55770c]
mov ecx, ebp
call esi
push 0x56e124
push ebp
mov ecx, ebx
call fcn.00527220
test eax, eax
jne 0x52ab74
mov esi, dword [ebp]
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x3c]
mov esi, dword [esi + 0x10]
sub eax, 0x50
sbb ecx, 0
push ecx
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push ebp
mov ecx, ebx
call fcn.00527440
test eax, eax
je 0x52abc0
push 0x56e124
lea eax, [ebx + 0x1f0]
mov ecx, ebx
push eax
call fcn.00527630
test eax, eax
je 0x52abc0
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov esi, eax
mov ecx, 0xffffffff
mov eax, 0xfffffffc
sub eax, edi
sbb ecx, dword [esp + 0x30]
add esi, eax
mov dword [esp + 0x28], esi
adc edx, ecx
mov dword [esp + 0x2c], edx
mov eax, dword [ebp]
push 0x34
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
cdq
test edx, edx
ja 0x52abdd
jb 0x52ab99
cmp eax, 0x34
jae 0x52abdd
mov eax, dword [esp + 0x10]
mov ecx, 0x5d381c
push dword [eax]
call fcn.00487740
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
jmp 0x52b8ce
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov eax, dword [esp + 0x10]
push dword [eax]
jmp 0x52b8c4
movzx eax, byte [esp + 0x63]
xor esi, esi
shl ax, 8
movzx edi, ax
movzx eax, byte [esp + 0x62]
or edi, eax
movzx eax, byte [esp + 0x61]
shl ax, 8
movzx eax, ax
shl edi, 0x10
or edi, eax
movzx eax, byte [esp + 0x60]
or edi, eax
movzx eax, byte [esp + 0x73]
shl ax, 8
movzx edx, ax
movzx eax, byte [esp + 0x72]
or edx, eax
movzx eax, byte [esp + 0x71]
shl ax, 8
movzx eax, ax
shl edx, 0x10
or edx, eax
movzx eax, byte [esp + 0x70]
or edx, eax
movzx eax, byte [esp + 0x6f]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x6e]
or ecx, eax
mov dword [esp + 0x24], edx
movzx eax, byte [esp + 0x6d]
xor edx, edx
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x6c]
or ecx, eax
movzx eax, byte [esp + 0x83]
or esi, ecx
shl ax, 8
mov dword [esp + 0x30], esi
movzx esi, ax
movzx eax, byte [esp + 0x82]
or esi, eax
movzx eax, byte [esp + 0x81]
shl ax, 8
movzx eax, ax
shl esi, 0x10
or esi, eax
movzx eax, byte [esp + 0x80]
or esi, eax
movzx eax, byte [esp + 0x7f]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x7e]
or ecx, eax
movzx eax, byte [esp + 0x7d]
shl ecx, 0x10
shl ax, 8
movzx eax, ax
or ecx, eax
movzx eax, byte [esp + 0x7c]
or ecx, eax
movzx eax, byte [esp + 0x5a]
or edx, ecx
movzx ecx, byte [esp + 0x5b]
add edx, dword [esp + 0x28]
mov dword [esp + 0x18], edx
adc esi, dword [esp + 0x2c]
shl cx, 8
or cx, ax
cmp cx, 0x2e
jbe 0x52ad20
mov eax, dword [ebx + 0x64b7d0]
mov ecx, 0x5d381c
push eax
push eax
call fcn.00488710
mov eax, dword [ebx + 0x6486a8]
cmp eax, 1
je 0x52ad1c
cmp eax, 2
je 0x52ad1c
jmp 0x52aba9
xor esi, esi
mov edx, dword [esp + 0x18]
add edx, dword [esp + 0x28]
mov dword [esp + 0x18], edx
adc esi, dword [esp + 0x2c]
mov dword [esp + 0x34], esi
mov dword [ebx + 0x64b7c0], edx
mov dword [ebx + 0x64b7c4], esi
mov dword [esp + 0x38], 0
mov dword [ebx + 0x64b7b8], 0
mov dword [ebx + 0x64b7bc], 0
mov dword [esp + 0x20], 1
cmp dword [ebx + 0x64b7e0], edi
je 0x52ad7a
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov eax, dword [ebx + 0x64b7dc]
mov dword [ebx + 0x64b7e0], edi
cmp edi, eax
jae 0x52b891
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx + 0x64b7d0]
dec eax
cmp edi, eax
jne 0x52adcc
push ecx
call fcn.00538fcb
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
test edi, edi
jne 0x52addb
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
push edi
push ecx
mov ecx, ebx
call fcn.00522960
mov edi, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebp]
mov esi, dword [eax + 0x18]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
test al, al
jne 0x52ae8b
mov eax, dword [ebp]
push 0
push edi
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
test al, al
jne 0x52ae8b
mov edi, edi
push dword [ebx + 0x64b7e0]
mov ecx, ebx
call fcn.00521410
cmp eax, 9
je 0x52b8e6
cmp eax, 3
je 0x52af8f
mov eax, dword [ebx + 0x64b7dc]
mov ecx, dword [ebx + 0x64b7e0]
dec eax
cmp ecx, eax
jne 0x52ae5e
push dword [ebx + 0x64b7d0]
call fcn.00538fcb
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
test edi, edi
je 0x52adb4
jmp 0x52ae72
push ecx
push dword [ebx + 0x64b7ac]
mov ecx, ebx
call fcn.00522960
mov edi, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebp]
push 0
push edi
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
test al, al
je 0x52ae10
cmp dword [esp + 0x44], 0
jne 0x52aebf
cmp dword [esp + 0x20], 0
je 0x52aec7
mov esi, dword [ebp]
push 0
push dword [esp + 0x38]
push dword [esp + 0x20]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
lea eax, [ebx + 0x64b858]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
push ebp
mov ecx, ebx
call fcn.00527440
test eax, eax
je 0x52b83a
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
mov dword [ebx + 0x64b7e8], eax
xor ecx, ecx
mov dword [ebx + 0x64b7ec], edx
jmp 0x52af00
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56e114]
jne 0x52af1b
inc ecx
cmp ecx, 4
jl 0x52af00
je 0x52b83a
xor ecx, ecx
lea ecx, [ecx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56e124]
jne 0x52af3b
inc ecx
cmp ecx, 4
jl 0x52af20
je 0x52b83a
xor ecx, ecx
lea ecx, [ecx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56e134]
jne 0x52b81d
inc ecx
cmp ecx, 4
jl 0x52af40
jne 0x52b81d
mov eax, dword [ebp]
push 0x2a
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
cmp eax, 0x2a
je 0x52af9c
cmp dword [ebx + 0x6486a8], 1
jne 0x52a4c6
jmp 0x52b82a
mov dword [esp + 0x44], 1
jmp 0x52b877
push 0x68
call fcn.005398b8
mov esi, eax
add esp, 4
test esi, esi
je 0x52adb4
movzx ecx, byte [esp + 0x51]
movzx eax, byte [esp + 0x50]
shl cx, 8
or cx, ax
mov word [esi], cx
movzx ecx, byte [esp + 0x53]
movzx eax, byte [esp + 0x52]
shl cx, 8
or cx, ax
mov word [esi + 2], cx
movzx ecx, byte [esp + 0x55]
movzx eax, byte [esp + 0x54]
shl cx, 8
or cx, ax
mov word [esi + 4], cx
movzx ecx, byte [esp + 0x57]
movzx eax, byte [esp + 0x56]
shl cx, 8
or cx, ax
mov word [esi + 6], cx
movzx eax, byte [esp + 0x5b]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x5a]
or ecx, eax
movzx eax, byte [esp + 0x59]
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x58]
or ecx, eax
mov dword [esi + 8], ecx
movzx eax, byte [esp + 0x5f]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x5e]
or ecx, eax
movzx eax, byte [esp + 0x5d]
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x5c]
or ecx, eax
mov dword [esi + 0xc], ecx
movzx eax, byte [esp + 0x63]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x62]
or ecx, eax
movzx eax, byte [esp + 0x61]
shl ax, 8
shl ecx, 0x10
movzx eax, ax
or ecx, eax
movzx eax, byte [esp + 0x60]
or ecx, eax
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], ecx
movzx eax, byte [esp + 0x67]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x66]
or ecx, eax
movzx eax, byte [esp + 0x65]
shl ecx, 0x10
shl ax, 8
movzx eax, ax
or ecx, eax
movzx eax, byte [esp + 0x64]
or ecx, eax
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], ecx
movzx ecx, byte [esp + 0x69]
movzx eax, byte [esp + 0x68]
shl cx, 8
or cx, ax
movzx edx, cx
mov word [esi + 0x20], cx
movzx ecx, byte [esp + 0x6b]
movzx eax, byte [esp + 0x6a]
shl cx, 8
or cx, ax
mov word [esi + 0x24], cx
movzx ecx, byte [esp + 0x6d]
movzx eax, byte [esp + 0x6c]
shl cx, 8
or cx, ax
mov word [esi + 0x26], cx
movzx eax, byte [esp + 0x6f]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x6e]
or ecx, eax
mov dword [esi + 0x28], ecx
movzx ecx, byte [esp + 0x71]
movzx eax, byte [esp + 0x70]
shl cx, 8
or cx, ax
mov word [esi + 0x2c], cx
movzx eax, byte [esp + 0x75]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x74]
or ecx, eax
movzx eax, byte [esp + 0x73]
shl ax, 8
movzx eax, ax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [esp + 0x72]
or ecx, eax
mov dword [esi + 0x38], ecx
movzx eax, byte [esp + 0x79]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x78]
or ecx, eax
movzx eax, byte [esp + 0x77]
shl ax, 8
shl ecx, 0x10
movzx eax, ax
or ecx, eax
movzx eax, byte [esp + 0x76]
or ecx, eax
mov dword [esi + 0x34], 0
mov dword [esi + 0x30], ecx
mov dword [esi + 0x44], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x4c], 0
test dx, dx
jne 0x52b1d3
cmp dword [ebx + 0x6486a8], 1
jne 0x52b91e
jmp 0x52b82a
inc edx
push edx
call fcn.005398b8
add esp, 4
mov dword [esi + 0x48], eax
test eax, eax
je 0x52adb4
movzx eax, word [esi + 0x24]
test ax, ax
je 0x52b205
push eax
call fcn.005398b8
add esp, 4
mov dword [esi + 0x40], eax
test eax, eax
je 0x52adb4
movzx eax, word [esi + 0x26]
test ax, ax
je 0x52b223
inc eax
push eax
call fcn.005398b8
add esp, 4
mov dword [esi + 0x44], eax
test eax, eax
je 0x52adb4
mov eax, dword [ebp]
mov edi, dword [eax + 0xc]
mov ecx, edi
movzx eax, word [esi + 0x20]
push eax
push dword [esi + 0x48]
call dword [0x55770c]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x20]
cmp eax, ecx
jne 0x52af7d
movzx ecx, word [esi + 0x24]
test cx, cx
je 0x52b274
mov eax, dword [ebp]
push ecx
push dword [esi + 0x40]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x55770c]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x24]
cmp eax, ecx
jne 0x52af7d
movzx ecx, word [esi + 0x26]
test cx, cx
je 0x52b29f
mov eax, dword [ebp]
push ecx
push dword [esi + 0x44]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x55770c]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x26]
cmp eax, ecx
jne 0x52af7d
mov eax, dword [esi + 0x48]
movzx ecx, word [esi + 0x20]
mov byte [ecx + eax], 0
movzx eax, word [esi + 0x26]
test ax, ax
je 0x52b2bc
mov ecx, eax
mov eax, dword [esi + 0x44]
mov byte [ecx + eax], 0
mov edi, 0x800
test word [esi + 4], di
jne 0x52b347
mov edx, dword [esi + 0x40]
test edx, edx
jne 0x52b2d7
mov dword [esi + 0x4c], edx
jmp 0x52b322
movzx edi, word [esi + 0x24]
add edi, 0xfffffffc
add edi, edx
cmp edx, edi
jae 0x52b316
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
shl cx, 8
or cx, ax
mov eax, 0x7075
cmp cx, ax
je 0x52b382
movzx ecx, byte [edx + 3]
movzx eax, byte [edx + 2]
add edx, 4
shl ecx, 8
or ecx, eax
add edx, ecx
cmp edx, edi
jb 0x52b2e4
mov dword [esi + 0x4c], 0
mov edi, 0x800
cmp dword [esi + 0x4c], 0
jne 0x52b33d
movzx eax, byte [esi + 1]
push eax
push dword [esi + 0x48]
call fcn.004eec60
test al, al
je 0x52b33d
or word [esi + 4], di
test word [esi + 4], di
je 0x52b488
push dword [esi + 0x48]
call fcn.0053f9a8
add esp, 4
mov dword [esi + 0x4c], eax
test eax, eax
je 0x52adb4
push eax
mov ecx, ebx
call fcn.00523150
mov edi, eax
test edi, edi
je 0x52b4d2
push dword [esi + 0x48]
call fcn.0053867f
add esp, 4
mov dword [esi + 0x48], edi
jmp 0x52b4d2
mov dword [esi + 0x4c], 0
test edx, edx
je 0x52b31d
movzx ecx, byte [edx + 3]
lea edi, [edx + 2]
movzx eax, byte [edi]
shl cx, 8
or cx, ax
cmp byte [edi + 2], 1
movzx eax, cx
mov dword [esp + 0x40], eax
ja 0x52b31d
movzx ecx, byte [edi + 6]
movzx eax, byte [edi + 5]
mov edx, dword [esi + 0x48]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
or ecx, eax
add edi, 7
mov dword [esp + 0x10], ecx
mov ecx, edx
lea eax, [ecx + 1]
mov dword [esp + 0x3c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x52b3e1
sub ecx, dword [esp + 0x3c]
push ecx
push edx
push 0xffffffffffffffff
call fcn.00482e80
not eax
cmp eax, dword [esp + 0x10]
jne 0x52b31d
mov eax, dword [esp + 0x40]
add eax, 0xfffffffb
movzx eax, ax
mov dword [esp + 0x10], eax
test ax, ax
jne 0x52b446
movzx eax, word [esi + 0x20]
inc eax
push eax
call fcn.005398b8
add esp, 4
test eax, eax
je 0x52b31d
mov edx, dword [esi + 0x48]
mov edi, eax
nop
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edi], cl
lea edi, [edi + 1]
test cl, cl
jne 0x52b430
mov dword [esi + 0x4c], eax
jmp 0x52b31d
movzx eax, ax
inc eax
push eax
call fcn.005398b8
add esp, 4
mov dword [esp + 0x40], eax
test eax, eax
je 0x52b31d
mov edx, dword [esp + 0x10]
movzx ecx, dx
push ecx
push edi
push eax
call fcn.0053c4d0
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov edx, dword [esp + 0x10]
movzx ecx, dx
mov byte [eax + ecx], 0
mov dword [esi + 0x4c], eax
jmp 0x52b31d
cmp dword [esi + 0x48], 0
movzx ecx, word [esi]
je 0x52b4ad
movzx eax, cl
push eax
shr ecx, 8
push ecx
call fcn.004eec90
test al, al
je 0x52b4ad
mov eax, dword [esi + 0x48]
push eax
push eax
call dword [sym.imp.USER32.dll_OemToCharA]
cmp dword [esi + 0x44], 0
movzx ecx, word [esi]
je 0x52b4d2
movzx eax, cl
push eax
shr ecx, 8
push ecx
call fcn.004eec90
test al, al
je 0x52b4d2
mov eax, dword [esi + 0x44]
push eax
push eax
call dword [sym.imp.USER32.dll_OemToCharA]
mov dword [ebx + 0x64b7a4], 0
mov edx, dword [esi + 0x40]
test edx, edx
je 0x52b754
movzx edi, word [esi + 0x24]
add edi, 0xfffffffc
add edi, edx
cmp edx, edi
jae 0x52b754
jmp 0x52b500
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
shl cx, 8
or cx, ax
cmp cx, 1
je 0x52b52f
movzx ecx, byte [edx + 3]
movzx eax, byte [edx + 2]
add edx, 4
shl ecx, 8
or ecx, eax
add edx, ecx
cmp edx, edi
jb 0x52b500
jmp 0x52b754
mov dword [ebx + 0x64b7a4], 1
lea edi, [edx + 4]
cmp dword [esi + 0x18], 0xffffffff
mov dword [esp + 0x10], edi
jne 0x52b5e2
cmp dword [esi + 0x1c], 0
jne 0x52b5e2
movzx eax, byte [edi + 7]
xor ebx, ebx
cdq
mov ebp, eax
mov ecx, edx
movzx eax, byte [edi + 6]
shld ecx, ebp, 8
cdq
or ecx, edx
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 5]
shld ecx, ebp, 8
cdq
or ecx, edx
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 4]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 3]
cdq
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 2]
cdq
or ecx, eax
or edi, edx
mov eax, dword [esp + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 1]
cdq
or ecx, eax
or edi, edx
shld edi, ecx, 8
or ebp, edi
shl ecx, 8
mov edi, dword [esp + 0x10]
or ebx, ecx
movzx eax, byte [edi]
cdq
or ebx, eax
or ebp, edx
add edi, 8
mov dword [esi + 0x18], ebx
mov dword [esi + 0x1c], ebp
mov dword [esp + 0x10], edi
cmp dword [esi + 0x10], 0xffffffff
jne 0x52b684
cmp dword [esi + 0x14], 0
jne 0x52b684
movzx eax, byte [edi + 7]
xor ebx, ebx
cdq
mov ebp, eax
mov ecx, edx
movzx eax, byte [edi + 6]
shld ecx, ebp, 8
cdq
or ecx, edx
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 5]
shld ecx, ebp, 8
cdq
or ecx, edx
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 4]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 3]
cdq
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 2]
cdq
or ecx, eax
or edi, edx
mov eax, dword [esp + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 1]
cdq
or ecx, eax
or edi, edx
shld edi, ecx, 8
or ebp, edi
shl ecx, 8
mov edi, dword [esp + 0x10]
or ebx, ecx
movzx eax, byte [edi]
cdq
or ebx, eax
or ebp, edx
add edi, 8
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], ebp
mov dword [esp + 0x10], edi
cmp dword [esi + 0x30], 0xffffffff
jne 0x52b722
cmp dword [esi + 0x34], 0
jne 0x52b722
movzx eax, byte [edi + 7]
xor ebx, ebx
cdq
mov ebp, eax
mov ecx, edx
movzx eax, byte [edi + 6]
shld ecx, ebp, 8
cdq
or ecx, edx
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 5]
shld ecx, ebp, 8
cdq
or ecx, edx
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 4]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
movzx eax, byte [edi + 3]
cdq
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 2]
cdq
or ecx, eax
or edi, edx
mov eax, dword [esp + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 1]
cdq
or ecx, eax
or edi, edx
shld edi, ecx, 8
or ebp, edi
shl ecx, 8
mov edi, dword [esp + 0x10]
or ebx, ecx
movzx eax, byte [edi]
cdq
or ebx, eax
or ebp, edx
mov dword [esi + 0x30], ebx
add edi, 8
mov dword [esi + 0x34], ebp
cmp dword [esi + 0x28], 0xffff
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x4c]
jne 0x52b754
movzx ecx, byte [edi + 3]
movzx eax, byte [edi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi]
shl ecx, 8
or ecx, eax
mov dword [esi + 0x28], ecx
cmp dword [ebx + 0x6486a8], 1
jne 0x52b766
cmp dword [ebx + 0x64b7dc], 1
je 0x52b76f
cmp dword [ebx + 0x6486b0], 0
je 0x52b77d
mov eax, dword [esp + 0x28]
add dword [esi + 0x30], eax
mov eax, dword [esp + 0x2c]
adc dword [esi + 0x34], eax
cmp dword [esi + 0x28], 0
jne 0x52b7ca
cmp dword [esp + 0x38], 0
je 0x52b7a2
mov eax, dword [esi + 0x34]
cmp eax, dword [ebx + 0x64b7bc]
ja 0x52b7ca
jb 0x52b7a2
mov eax, dword [esi + 0x30]
cmp eax, dword [ebx + 0x64b7b8]
jae 0x52b7ca
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x30]
cmp ecx, dword [esp + 0x34]
ja 0x52b7ca
jb 0x52b7b6
cmp eax, dword [esp + 0x18]
jae 0x52b7ca
mov dword [ebx + 0x64b7b8], eax
mov dword [ebx + 0x64b7bc], ecx
mov dword [esp + 0x38], 1
inc dword [ebx + 0x64b85c]
mov ecx, ebx
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x58], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x50], 0
mov dword [esi + 0x54], 0
test eax, eax
je 0x52b7fd
push eax
call fcn.0052dde0
jmp 0x52b805
push dword [esi + 0x48]
call fcn.0052db60
mov dword [esi + 0x54], eax
lea edi, [esi + 0x64]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], edi
mov dword [eax], esi
mov dword [edi], 0
jmp 0x52b82a
cmp dword [ebx + 0x6486a8], 1
jne 0x52b90c
push ebp
mov ecx, ebx
call fcn.00527440
test eax, eax
jne 0x52aed7
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push dword [esp + 0x14]
call fcn.0053867f
add esp, 4
xor ecx, ecx
lea ebx, [ebx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56e134]
jne 0x52b891
inc ecx
cmp ecx, 4
jl 0x52b860
jne 0x52b891
inc dword [ebx + 0x64b7e0]
mov edi, dword [ebx + 0x64b7e0]
mov eax, dword [ebx + 0x64b7dc]
cmp edi, eax
jb 0x52ad96
mov eax, dword [ebx + 0x64b85c]
xor esi, esi
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
cmp eax, edx
jne 0x52b8ad
cmp esi, ecx
je 0x52a502
movzx eax, ax
xor esi, esi
cmp eax, edx
jne 0x52b8be
cmp esi, ecx
je 0x52a502
push dword [ebx + 0x64b7ac]
mov ecx, 0x5d381c
call fcn.00487740
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
push edi
mov ecx, 0x5d381c
call fcn.004880a0
mov ecx, dword [esp + 0x84]
mov eax, 9
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00530218
add esp, 0x78
ret
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebp
call esi
push dword [esp + 0x14]
jmp 0x52b8c4