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

Disassembly:
sub esp, 0x78
mov eax, dword [0x58bb30]
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 [0x55670c]
mov ecx, ebp
call esi
test al, al
jne 0x5297a5
push dword [edi]
mov ecx, 0x5d281c
call fcn.004878a0
pop edi
pop esi
pop ebp
mov eax, 0x12
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0052f708
add esp, 0x78
ret
mov ecx, ebp
call fcn.0048f0c0
test edx, edx
jl 0x5297c3
jg 0x5297b9
cmp eax, 0x20000
jbe 0x5297c3
sub eax, 0x20000
sbb edx, 0
jmp 0x5297c7
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 [0x55670c]
mov ecx, ebp
call esi
push 0x56cf0c
push ebp
mov ecx, ebx
call fcn.00526a70
mov esi, dword [ebp]
test eax, eax
jne 0x529807
mov esi, dword [esi + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push dword [edi]
jmp 0x52adb4
mov esi, dword [esi + 0x14]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push 0x56cf0c
mov edi, eax
mov dword [esp + 0x18], edx
push ebp
mov ecx, ebx
mov dword [esp + 0x28], edi
call fcn.00526a70
test eax, eax
je 0x52985e
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push 0x56cf0c
push ebp
mov ecx, ebx
mov dword [esp + 0x28], eax
mov edi, eax
mov dword [esp + 0x1c], edx
call fcn.00526a70
test eax, eax
jne 0x529831
mov esi, dword [ebp]
push 0
push dword [esp + 0x18]
mov esi, dword [esi + 0x10]
mov ecx, esi
push edi
call dword [0x55670c]
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 [0x55670c]
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 0x5299d6
movzx eax, cx
inc eax
push eax
call fcn.00538da8
mov edx, eax
add esp, 4
mov dword [ebx + 0x64b864], edx
test edx, edx
je 0x52a2a4
mov ecx, dword [ebp]
movzx eax, word [ebx + 0x64b860]
push eax
push edx
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
movzx edx, word [ebx + 0x64b860]
mov ecx, dword [ebx + 0x64b864]
cmp eax, edx
je 0x5299ce
push ecx
call fcn.00537b6f
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.0052f708
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 0x529a07
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
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.0052f708
add esp, 0x78
ret
cmp dword [ebx + 0x64b7dc], 1
je 0x529a5b
cmp dword [ebx + 0x6486b0], 0
jne 0x52adbe
push 0x557930
push dword [ebx + 0x64b7ac]
call fcn.004a0ef0
test al, al
jne 0x529a5b
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
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.0052f708
add esp, 0x78
ret
mov eax, dword [ebx + 0x64b7dc]
cmp eax, 1
je 0x529af3
mov ecx, dword [ebx + 0x64b7d4]
mov eax, dword [ebx + 0x64b7d0]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x529a9c
test dx, dx
je 0x529a98
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x529a9c
add eax, 4
add ecx, 4
test dx, dx
jne 0x529a76
xor eax, eax
jmp 0x529aa1
sbb eax, eax
or eax, 1
test eax, eax
jne 0x529aed
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push dword [esp + 0x10]
xor eax, eax
cmp word [0x5b130a], 0x53
setne al
dec eax
and eax, 0x1c
add eax, 0x2e
push eax
call fcn.004685f0
pop edi
pop esi
pop ebp
mov eax, 0xc
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0052f708
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 0x529b1f
cmp eax, 1
je 0x529b2c
cmp dword [ebx + 0x6486b0], 0
je 0x529db6
cmp dword [esp + 0x18], 0xffffffff
je 0x529b3e
cmp esi, 0xffffffff
jne 0x529d46
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 [0x55670c]
mov ecx, ebp
call esi
push 0x56cf24
push ebp
mov ecx, ebx
call fcn.00526710
test eax, eax
je 0x529db6
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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 [0x55670c]
mov ecx, ebp
call esi
cmp eax, 0x10
je 0x529bef
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
mov eax, dword [esp + 0x10]
mov ecx, 0x5d281c
push dword [eax]
call fcn.00487ae0
pop edi
pop esi
pop ebp
mov eax, 0xb
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0052f708
add esp, 0x78
ret
push 0x56cf0c
push ebp
mov ecx, ebx
call fcn.00526710
test eax, eax
je 0x529bb5
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 0x52adbe
mov esi, dword [ebp]
push 0
push edx
push dword [esp + 0x24]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push 0x56cf1c
push ebp
mov ecx, ebx
call fcn.00526710
test eax, eax
jne 0x529db6
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 [0x55670c]
mov ecx, ebp
call esi
push ebp
mov ecx, ebx
call fcn.00526930
test eax, eax
je 0x52a0c2
push 0x56cf1c
lea eax, [ebx + 0x1f0]
mov ecx, ebx
push eax
call fcn.00526b20
test eax, eax
je 0x52a0c2
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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 0x529db2
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 [0x55670c]
mov ecx, ebp
call esi
push 0x56cf2c
push ebp
mov ecx, ebx
call fcn.00526a70
test eax, eax
je 0x52a0c2
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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 [0x55670c]
mov ecx, ebp
call esi
push 0x56cf24
push ebp
mov ecx, ebx
call fcn.00526710
test eax, eax
je 0x52a20a
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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 [0x55670c]
mov ecx, ebp
call esi
cmp eax, 0x10
jne 0x529bb5
push 0x56cf0c
push ebp
mov ecx, ebx
call fcn.00526710
test eax, eax
je 0x529bb5
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 0x529fb9
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push edi
push dword [ebx + 0x64b7d0]
mov ecx, ebx
call fcn.00521e40
mov ecx, dword [ebp]
push 0
push eax
mov dword [esp + 0x2c], eax
mov esi, dword [ecx + 4]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
test al, al
jne 0x529fa9
lea ebx, [ebx]
push edi
mov ecx, ebx
call fcn.005208c0
test eax, eax
jne 0x52ade1
push dword [esp + 0x24]
call fcn.00537b6f
add esp, 4
mov ecx, ebx
push edi
push dword [ebx + 0x64b7d0]
call fcn.00521e40
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 [0x55670c]
mov ecx, ebp
call esi
test al, al
je 0x529f60
push dword [esp + 0x24]
call fcn.00537b6f
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 [0x55670c]
mov ecx, ebp
call esi
push 0x56cf1c
push ebp
mov ecx, ebx
call fcn.00526710
test eax, eax
jne 0x52a064
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 [0x55670c]
mov ecx, ebp
call esi
push ebp
mov ecx, ebx
call fcn.00526930
test eax, eax
je 0x52a0b0
push 0x56cf1c
lea eax, [ebx + 0x1f0]
mov ecx, ebx
push eax
call fcn.00526b20
test eax, eax
je 0x52a0b0
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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 [0x55670c]
mov ecx, ebp
call esi
cdq
test edx, edx
ja 0x52a0cd
jb 0x52a089
cmp eax, 0x34
jae 0x52a0cd
mov eax, dword [esp + 0x10]
mov ecx, 0x5d281c
push dword [eax]
call fcn.00486f40
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
jmp 0x52adbe
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
mov eax, dword [esp + 0x10]
push dword [eax]
jmp 0x52adb4
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 0x52a210
mov eax, dword [ebx + 0x64b7d0]
mov ecx, 0x5d281c
push eax
push eax
call fcn.00487f10
mov eax, dword [ebx + 0x6486a8]
cmp eax, 1
je 0x52a20c
cmp eax, 2
je 0x52a20c
jmp 0x52a099
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 + str.UVYe], 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 0x52a26a
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
mov eax, dword [ebx + 0x64b7dc]
mov dword [ebx + 0x64b7e0], edi
cmp edi, eax
jae 0x52ad81
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx + 0x64b7d0]
dec eax
cmp edi, eax
jne 0x52a2bc
push ecx
call fcn.005384bb
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
test edi, edi
jne 0x52a2cb
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0052f708
add esp, 0x78
ret
push edi
push ecx
mov ecx, ebx
call fcn.00521e40
mov edi, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebp]
mov esi, dword [eax + 0x18]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
test al, al
jne 0x52a37b
mov eax, dword [ebp]
push 0
push edi
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
test al, al
jne 0x52a37b
mov edi, edi
push dword [ebx + 0x64b7e0]
mov ecx, ebx
call fcn.005208c0
cmp eax, 9
je 0x52add6
cmp eax, 3
je 0x52a47f
mov eax, dword [ebx + 0x64b7dc]
mov ecx, dword [ebx + 0x64b7e0]
dec eax
cmp ecx, eax
jne 0x52a34e
push dword [ebx + 0x64b7d0]
call fcn.005384bb
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
test edi, edi
je 0x52a2a4
jmp 0x52a362
push ecx
push dword [ebx + 0x64b7ac]
mov ecx, ebx
call fcn.00521e40
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 [0x55670c]
mov ecx, ebp
call esi
test al, al
je 0x52a300
cmp dword [esp + 0x44], 0
jne 0x52a3af
cmp dword [esp + 0x20], 0
je 0x52a3b7
mov esi, dword [ebp]
push 0
push dword [esp + 0x38]
push dword [esp + 0x20]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x55670c]
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.00526930
test eax, eax
je 0x52ad2a
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
mov dword [ebx + 0x64b7e8], eax
xor ecx, ecx
mov dword [ebx + 0x64b7ec], edx
jmp 0x52a3f0
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56cf0c]
jne 0x52a40b
inc ecx
cmp ecx, 4
jl 0x52a3f0
je 0x52ad2a
xor ecx, ecx
lea ecx, [ecx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56cf1c]
jne 0x52a42b
inc ecx
cmp ecx, 4
jl 0x52a410
je 0x52ad2a
xor ecx, ecx
lea ecx, [ecx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56cf2c]
jne 0x52ad0d
inc ecx
cmp ecx, 4
jl 0x52a430
jne 0x52ad0d
mov eax, dword [ebp]
push 0x2a
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
cmp eax, 0x2a
je 0x52a48c
cmp dword [ebx + 0x6486a8], 1
jne 0x5299b6
jmp 0x52ad1a
mov dword [esp + 0x44], 1
jmp 0x52ad67
push 0x68
call fcn.00538da8
mov esi, eax
add esp, 4
test esi, esi
je 0x52a2a4
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 0x52a6c3
cmp dword [ebx + 0x6486a8], 1
jne 0x52ae0e
jmp 0x52ad1a
inc edx
push edx
call fcn.00538da8
add esp, 4
mov dword [esi + 0x48], eax
test eax, eax
je 0x52a2a4
movzx eax, word [esi + 0x24]
test ax, ax
je 0x52a6f5
push eax
call fcn.00538da8
add esp, 4
mov dword [esi + 0x40], eax
test eax, eax
je 0x52a2a4
movzx eax, word [esi + 0x26]
test ax, ax
je 0x52a713
inc eax
push eax
call fcn.00538da8
add esp, 4
mov dword [esi + 0x44], eax
test eax, eax
je 0x52a2a4
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 [0x55670c]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x20]
cmp eax, ecx
jne 0x52a46d
movzx ecx, word [esi + 0x24]
test cx, cx
je 0x52a764
mov eax, dword [ebp]
push ecx
push dword [esi + 0x40]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x55670c]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x24]
cmp eax, ecx
jne 0x52a46d
movzx ecx, word [esi + 0x26]
test cx, cx
je 0x52a78f
mov eax, dword [ebp]
push ecx
push dword [esi + 0x44]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x55670c]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x26]
cmp eax, ecx
jne 0x52a46d
mov eax, dword [esi + 0x48]
movzx ecx, word [esi + 0x20]
mov byte [ecx + eax], 0
movzx eax, word [esi + 0x26]
test ax, ax
je 0x52a7ac
mov ecx, eax
mov eax, dword [esi + 0x44]
mov byte [ecx + eax], 0
mov edi, 0x800
test word [esi + 4], di
jne 0x52a837
mov edx, dword [esi + 0x40]
test edx, edx
jne 0x52a7c7
mov dword [esi + 0x4c], edx
jmp 0x52a812
movzx edi, word [esi + 0x24]
add edi, 0xfffffffc
add edi, edx
cmp edx, edi
jae 0x52a806
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
shl cx, 8
or cx, ax
mov eax, 0x7075
cmp cx, ax
je 0x52a872
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 0x52a7d4
mov dword [esi + 0x4c], 0
mov edi, 0x800
cmp dword [esi + 0x4c], 0
jne 0x52a82d
movzx eax, byte [esi + 1]
push eax
push dword [esi + 0x48]
call fcn.004ee0c0
test al, al
je 0x52a82d
or word [esi + 4], di
test word [esi + 4], di
je 0x52a978
push dword [esi + 0x48]
call fcn.0053ee98
add esp, 4
mov dword [esi + 0x4c], eax
test eax, eax
je 0x52a2a4
push eax
mov ecx, ebx
call fcn.00522630
mov edi, eax
test edi, edi
je 0x52a9c2
push dword [esi + 0x48]
call fcn.00537b6f
add esp, 4
mov dword [esi + 0x48], edi
jmp 0x52a9c2
mov dword [esi + 0x4c], 0
test edx, edx
je 0x52a80d
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 0x52a80d
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 0x52a8d1
sub ecx, dword [esp + 0x3c]
push ecx
push edx
push 0xffffffffffffffff
call fcn.004826b0
not eax
cmp eax, dword [esp + 0x10]
jne 0x52a80d
mov eax, dword [esp + 0x40]
add eax, 0xfffffffb
movzx eax, ax
mov dword [esp + 0x10], eax
test ax, ax
jne 0x52a936
movzx eax, word [esi + 0x20]
inc eax
push eax
call fcn.00538da8
add esp, 4
test eax, eax
je 0x52a80d
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 0x52a920
mov dword [esi + 0x4c], eax
jmp 0x52a80d
movzx eax, ax
inc eax
push eax
call fcn.00538da8
add esp, 4
mov dword [esp + 0x40], eax
test eax, eax
je 0x52a80d
mov edx, dword [esp + 0x10]
movzx ecx, dx
push ecx
push edi
push eax
call fcn.0053b9c0
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 0x52a80d
cmp dword [esi + 0x48], 0
movzx ecx, word [esi]
je 0x52a99d
movzx eax, cl
push eax
shr ecx, 8
push ecx
call fcn.004ee0f0
test al, al
je 0x52a99d
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 0x52a9c2
movzx eax, cl
push eax
shr ecx, 8
push ecx
call fcn.004ee0f0
test al, al
je 0x52a9c2
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 0x52ac44
movzx edi, word [esi + 0x24]
add edi, 0xfffffffc
add edi, edx
cmp edx, edi
jae 0x52ac44
jmp 0x52a9f0
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
shl cx, 8
or cx, ax
cmp cx, 1
je 0x52aa1f
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 0x52a9f0
jmp 0x52ac44
mov dword [ebx + 0x64b7a4], 1
lea edi, [edx + 4]
cmp dword [esi + 0x18], 0xffffffff
mov dword [esp + 0x10], edi
jne 0x52aad2
cmp dword [esi + 0x1c], 0
jne 0x52aad2
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 0x52ab74
cmp dword [esi + 0x14], 0
jne 0x52ab74
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 0x52ac12
cmp dword [esi + 0x34], 0
jne 0x52ac12
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 0x52ac44
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 0x52ac56
cmp dword [ebx + 0x64b7dc], 1
je 0x52ac5f
cmp dword [ebx + 0x6486b0], 0
je 0x52ac6d
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 0x52acba
cmp dword [esp + 0x38], 0
je 0x52ac92
mov eax, dword [esi + 0x34]
cmp eax, dword [ebx + 0x64b7bc]
ja 0x52acba
jb 0x52ac92
mov eax, dword [esi + 0x30]
cmp eax, dword [ebx + 0x64b7b8]
jae 0x52acba
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x30]
cmp ecx, dword [esp + 0x34]
ja 0x52acba
jb 0x52aca6
cmp eax, dword [esp + 0x18]
jae 0x52acba
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 0x52aced
push eax
call fcn.0052d2d0
jmp 0x52acf5
push dword [esi + 0x48]
call fcn.0052d050
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 0x52ad1a
cmp dword [ebx + 0x6486a8], 1
jne 0x52adfc
push ebp
mov ecx, ebx
call fcn.00526930
test eax, eax
jne 0x52a3c7
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push dword [esp + 0x14]
call fcn.00537b6f
add esp, 4
xor ecx, ecx
lea ebx, [ebx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x56cf2c]
jne 0x52ad81
inc ecx
cmp ecx, 4
jl 0x52ad50
jne 0x52ad81
inc dword [ebx + 0x64b7e0]
mov edi, dword [ebx + 0x64b7e0]
mov eax, dword [ebx + 0x64b7dc]
cmp edi, eax
jb 0x52a286
mov eax, dword [ebx + 0x64b85c]
xor esi, esi
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
cmp eax, edx
jne 0x52ad9d
cmp esi, ecx
je 0x5299f2
movzx eax, ax
xor esi, esi
cmp eax, edx
jne 0x52adae
cmp esi, ecx
je 0x5299f2
push dword [ebx + 0x64b7ac]
mov ecx, 0x5d281c
call fcn.00486f40
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0052f708
add esp, 0x78
ret
push edi
mov ecx, 0x5d281c
call fcn.004878a0
mov ecx, dword [esp + 0x84]
mov eax, 9
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0052f708
add esp, 0x78
ret
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebp
call esi
push dword [esp + 0x14]
jmp 0x52adb4