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

Disassembly:
sub esp, 0x78
mov eax, dword [0x572844]
xor eax, esp
mov dword [esp + 0x74], eax
push ebx
mov ebx, ecx
mov dword [esp + 0x18], 0
mov eax, dword [ebx + 0x6496f0]
push ebp
lea ebp, [ebx + 0x6496f0]
mov dword [esp + 0x3c], ebx
push esi
mov esi, dword [eax + 4]
mov ecx, esi
push 0
push dword [ebx + 0x64b7b8]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x4c], ebp
call dword [0x541740]
mov ecx, ebp
call esi
test al, al
jne 0x5183a1
push dword [ebx + 0x64b7b8]
mov ecx, 0x5b68fc
call fcn.0047b330
pop esi
pop ebp
mov eax, 0x12
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
mov ecx, ebp
call fcn.00481c30
test edx, edx
jl 0x5183bf
jg 0x5183b5
cmp eax, 0x20000
jbe 0x5183bf
sub eax, 0x20000
sbb edx, 0
jmp 0x5183c3
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 [0x541740]
mov ecx, ebp
call esi
push 0x557a7c
push ebp
mov ecx, ebx
call fcn.00515670
mov esi, dword [ebp]
test eax, eax
jne 0x518423
mov esi, dword [esi + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push dword [ebx + 0x64b7b8]
mov ecx, 0x5b68fc
call fcn.0047a9d0
pop esi
pop ebp
mov eax, 3
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
mov esi, dword [esi + 0x14]
mov ecx, esi
push edi
call dword [0x541740]
mov ecx, ebp
call esi
push 0x557a7c
mov edi, eax
mov dword [esp + 0x18], edx
push ebp
mov ecx, ebx
mov dword [esp + 0x18], edi
call fcn.00515670
test eax, eax
je 0x51847d
mov edi, edi
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push 0x557a7c
push ebp
mov ecx, ebx
mov dword [esp + 0x18], eax
mov edi, eax
mov dword [esp + 0x1c], edx
call fcn.00515670
test eax, eax
jne 0x518450
mov esi, dword [ebp]
push 0
push dword [esp + 0x18]
mov esi, dword [esi + 0x10]
mov ecx, esi
push edi
call dword [0x541740]
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 [0x541740]
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 + 0x64b7c8], ecx
lea eax, [ecx + 1]
mov dword [ebx + 0x64b7c4], 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 + 0x1c], ecx
movzx ecx, byte [esp + 0x57]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esp + 0x61]
cdq
mov dword [esp + 0x2c], 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 + 0x20], edx
movzx eax, byte [esp + 0x58]
or esi, eax
movzx eax, byte [esp + 0x60]
or cx, ax
mov dword [esp + 0x18], esi
mov word [ebx + 0x64b848], cx
je 0x5185f5
movzx eax, cx
inc eax
push eax
call fcn.00525bb0
mov edx, eax
add esp, 4
mov dword [ebx + 0x64b84c], edx
test edx, edx
je 0x518ec4
mov ecx, dword [ebp]
movzx eax, word [ebx + 0x64b848]
push eax
push edx
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
movzx edx, word [ebx + 0x64b848]
mov ecx, dword [ebx + 0x64b84c]
cmp eax, edx
je 0x5185ed
push ecx
call fcn.00525b95
add esp, 4
mov dword [ebx + 0x64b84c], 0
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
mov esi, dword [esp + 0x18]
mov byte [ecx + edx], 0
mov eax, dword [esp + 0x2c]
or eax, dword [esp + 0x20]
jne 0x518626
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
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.0051dca8
add esp, 0x78
ret
cmp dword [ebx + 0x64b7c4], 1
je 0x51867a
cmp dword [ebx + 0x6486b0], 0
jne 0x5199ce
push 0x542910
push dword [ebx + 0x64b794]
call fcn.004939b0
test al, al
jne 0x51867a
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
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.0051dca8
add esp, 0x78
ret
mov eax, dword [ebx + 0x64b7c4]
cmp eax, 1
je 0x518715
mov ecx, dword [ebx + 0x64b7bc]
mov eax, dword [ebx + 0x64b7b8]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x5186bb
test dx, dx
je 0x5186b7
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x5186bb
add eax, 4
add ecx, 4
test dx, dx
jne 0x518695
xor eax, eax
jmp 0x5186c0
sbb eax, eax
or eax, 1
test eax, eax
jne 0x51870f
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov eax, dword [ebx + 0x64b7b8]
xor ecx, ecx
cmp word [0x595ffa], 0x53
push eax
setne cl
dec ecx
and ecx, 0x1c
add ecx, 0x2e
push ecx
call fcn.004165b0
pop edi
pop esi
pop ebp
mov eax, 0xc
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
mov eax, dword [ebx + 0x64b7c4]
cmp dword [ebx + 0x6486a8], 1
mov dword [ebx + 0x64b828], 0
mov dword [ebx + 0x64b830], 0
mov dword [ebx + 0x64b834], 0
jne 0x518741
cmp eax, 1
je 0x51874e
cmp dword [ebx + 0x6486b0], 0
je 0x5189a6
cmp dword [esp + 0x1c], 0xffffffff
je 0x518760
cmp esi, 0xffffffff
jne 0x518936
xor edx, edx
mov ecx, dword [esp + 0x10]
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 [0x541740]
mov ecx, ebp
call esi
push 0x557a94
push ebp
mov ecx, ebx
call fcn.00515310
test eax, eax
je 0x5189a6
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
sub eax, 4
mov dword [esp + 0x34], eax
mov eax, dword [ebp]
sbb edx, 0
push 0x10
mov dword [esp + 0x34], edx
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
cmp eax, 0x10
jne 0x518a2e
push 0x557a7c
push ebp
mov ecx, ebx
call fcn.00515310
test eax, eax
je 0x518a2e
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 + 0x38], 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 + 0x18], 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 + 0x64b7c4], ecx
cmp ecx, 1
jne 0x5199ce
mov esi, dword [ebp]
push 0
push edx
push dword [esp + 0x20]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push 0x557a8c
push ebp
mov ecx, ebx
call fcn.00515310
test eax, eax
jne 0x5189a6
mov esi, dword [ebp]
mov ecx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x38]
mov esi, dword [esi + 0x10]
sub eax, 0x50
sbb ecx, 0
push ecx
push eax
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push ebp
mov ecx, ebx
call fcn.00515530
test eax, eax
je 0x518ce2
push 0x557a8c
lea eax, [ebx + 0x1f0]
mov ecx, ebx
push eax
call fcn.00515720
test eax, eax
je 0x518ce2
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov esi, 0xfffffffc
mov ecx, 0xffffffff
sub esi, dword [esp + 0x18]
sbb ecx, dword [esp + 0x38]
add eax, esi
mov dword [esp + 0x24], eax
adc edx, ecx
jmp 0x5189a2
mov ecx, dword [esp + 0x10]
xor edx, edx
sub ecx, dword [esp + 0x18]
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 [0x541740]
mov ecx, ebp
call esi
push 0x557a9c
push ebp
mov ecx, ebx
call fcn.00515670
test eax, eax
je 0x518ce2
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov esi, eax
mov ecx, 0xfffffffc
sub ecx, dword [esp + 0x1c]
mov eax, 0xffffffff
sbb eax, 0
add esi, ecx
mov dword [esp + 0x24], esi
adc edx, eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x10]
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 [0x541740]
mov ecx, ebp
call esi
push 0x557a94
push ebp
mov ecx, ebx
call fcn.00515310
test eax, eax
je 0x518e2a
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov ecx, dword [ebp]
sub eax, 4
mov dword [esp + 0x30], eax
lea eax, [esp + 0x50]
push 0x10
sbb edx, 0
mov esi, dword [ecx + 0xc]
mov ecx, esi
push eax
mov dword [esp + 0x20], edx
call dword [0x541740]
mov ecx, ebp
call esi
cmp eax, 0x10
jne 0x518a2e
push 0x557a7c
push ebp
mov ecx, ebx
call fcn.00515310
test eax, eax
jne 0x518a68
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push dword [ebx + 0x64b7b8]
mov ecx, 0x5b68fc
call fcn.0047b570
pop edi
pop esi
pop ebp
mov eax, 0xb
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
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 + 0x24]
mov dword [esp + 0x34], esi
adc edx, dword [esp + 0x28]
shl ax, 8
movzx ecx, ax
movzx eax, byte [esp + 0x5e]
or ecx, eax
mov dword [esp + 0x2c], 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 + 0x64b7c4], ecx
lea eax, [ecx - 1]
mov dword [ebx + 0x64b7c8], eax
cmp edi, eax
je 0x518bd9
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push edi
push dword [ebx + 0x64b7b8]
mov ecx, ebx
call fcn.00510bd0
mov ecx, dword [ebp]
push 0
push eax
mov dword [esp + 0x28], eax
mov esi, dword [ecx + 4]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
test al, al
jne 0x518bc9
lea esp, [esp]
push edi
mov ecx, ebx
call fcn.0050f650
test eax, eax
jne 0x5199f1
push dword [esp + 0x20]
call fcn.00525b95
add esp, 4
mov ecx, ebx
push edi
push dword [ebx + 0x64b7b8]
call fcn.00510bd0
mov ecx, eax
mov eax, dword [ebp]
push 0
mov dword [esp + 0x24], ecx
push ecx
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
test al, al
je 0x518b80
push dword [esp + 0x20]
call fcn.00525b95
mov edx, dword [esp + 0x30]
add esp, 4
mov esi, dword [ebp]
push 0
mov dword [ebx + 0x64b7c8], edi
mov edi, dword [esp + 0x38]
mov esi, dword [esi + 0x10]
mov ecx, esi
push edx
push edi
call dword [0x541740]
mov ecx, ebp
call esi
push 0x557a8c
push ebp
mov ecx, ebx
call fcn.00515310
test eax, eax
jne 0x518c84
mov esi, dword [ebp]
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x34]
mov esi, dword [esi + 0x10]
sub eax, 0x50
sbb ecx, 0
push ecx
push eax
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push ebp
mov ecx, ebx
call fcn.00515530
test eax, eax
je 0x518cd0
push 0x557a8c
lea eax, [ebx + 0x1f0]
mov ecx, ebx
push eax
call fcn.00515720
test eax, eax
je 0x518cd0
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov esi, eax
mov ecx, 0xffffffff
mov eax, 0xfffffffc
sub eax, edi
sbb ecx, dword [esp + 0x2c]
add esi, eax
mov dword [esp + 0x24], esi
adc edx, ecx
mov dword [esp + 0x28], edx
mov eax, dword [ebp]
push 0x34
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
cdq
test edx, edx
ja 0x518ced
jb 0x518ca9
cmp eax, 0x34
jae 0x518ced
push dword [ebx + 0x64b7b8]
mov ecx, 0x5b68fc
call fcn.0047a9d0
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
jmp 0x5199ce
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push dword [ebx + 0x64b7b8]
jmp 0x5199c4
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 + 0x20], 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 + 0x2c], 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 + 0x24]
mov dword [esp + 0x1c], edx
adc esi, dword [esp + 0x28]
shl cx, 8
or cx, ax
cmp cx, 0x2e
jbe 0x518e30
mov eax, dword [ebx + 0x64b7b8]
mov ecx, 0x5b68fc
push eax
push eax
call fcn.0047b9a0
mov eax, dword [ebx + 0x6486a8]
cmp eax, 1
je 0x518e2c
cmp eax, 2
je 0x518e2c
jmp 0x518cb9
xor esi, esi
mov edx, dword [esp + 0x1c]
add edx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
adc esi, dword [esp + 0x28]
mov dword [esp + 0x30], esi
mov dword [ebx + 0x64b7a8], edx
mov dword [ebx + 0x64b7ac], esi
mov dword [esp + 0x34], 0
mov dword [ebx + 0x64b7a0], 0
mov dword [ebx + 0x64b7a4], 0
mov dword [esp + 0x38], 1
cmp dword [ebx + 0x64b7c8], edi
je 0x518e8a
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov eax, dword [ebx + 0x64b7c4]
mov dword [ebx + 0x64b7c8], edi
cmp edi, eax
jae 0x519991
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebx + 0x64b7b8]
dec eax
cmp edi, eax
jne 0x518edc
push ecx
call fcn.005264ec
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
test edi, edi
jne 0x518eeb
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
push edi
push ecx
mov ecx, ebx
call fcn.00510bd0
mov edi, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebp]
mov esi, dword [eax + 0x18]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
test al, al
jne 0x518f9d
mov eax, dword [ebp]
push 0
push edi
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
test al, al
jne 0x518f9d
push dword [ebx + 0x64b7c8]
mov ecx, ebx
call fcn.0050f650
cmp eax, 9
je 0x5199e6
cmp eax, 3
je 0x51909f
mov eax, dword [ebx + 0x64b7c4]
mov ecx, dword [ebx + 0x64b7c8]
dec eax
cmp ecx, eax
jne 0x518f70
push dword [ebx + 0x64b7b8]
call fcn.005264ec
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
test edi, edi
je 0x518ec4
jmp 0x518f84
push ecx
push dword [ebx + 0x64b794]
mov ecx, ebx
call fcn.00510bd0
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 [0x541740]
mov ecx, ebp
call esi
test al, al
je 0x518f22
cmp dword [esp + 0x40], 0
jne 0x518fd1
cmp dword [esp + 0x38], 0
je 0x518fd9
mov esi, dword [ebp]
push 0
push dword [esp + 0x34]
push dword [esp + 0x24]
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
lea eax, [ebx + 0x64b840]
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], 0
push ebp
mov ecx, ebx
call fcn.00515530
test eax, eax
je 0x51993a
lea esp, [esp]
mov eax, dword [ebp]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
mov dword [ebx + 0x64b7d0], eax
xor ecx, ecx
mov dword [ebx + 0x64b7d4], edx
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x557a7c]
jne 0x51902b
inc ecx
cmp ecx, 4
jl 0x519010
je 0x51993a
xor ecx, ecx
lea ecx, [ecx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x557a8c]
jne 0x51904b
inc ecx
cmp ecx, 4
jl 0x519030
je 0x51993a
xor ecx, ecx
lea ecx, [ecx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x557a9c]
jne 0x51991d
inc ecx
cmp ecx, 4
jl 0x519050
jne 0x51991d
mov eax, dword [ebp]
push 0x2a
mov esi, dword [eax + 0xc]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
cmp eax, 0x2a
je 0x5190ac
cmp dword [ebx + 0x6486a8], 1
jne 0x5185d5
jmp 0x51992a
mov dword [esp + 0x40], 1
jmp 0x519977
push 0x68
call fcn.00525bb0
mov esi, eax
add esp, 4
test esi, esi
je 0x518ec4
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 0x5192e3
cmp dword [ebx + 0x6486a8], 1
jne 0x519a1e
jmp 0x51992a
inc edx
push edx
call fcn.00525bb0
add esp, 4
mov dword [esi + 0x48], eax
test eax, eax
je 0x518ec4
movzx eax, word [esi + 0x24]
test ax, ax
je 0x519315
push eax
call fcn.00525bb0
add esp, 4
mov dword [esi + 0x40], eax
test eax, eax
je 0x518ec4
movzx eax, word [esi + 0x26]
test ax, ax
je 0x519332
push eax
call fcn.00525bb0
add esp, 4
mov dword [esi + 0x44], eax
test eax, eax
je 0x518ec4
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 [0x541740]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x20]
cmp eax, ecx
jne 0x51908d
movzx ecx, word [esi + 0x24]
test cx, cx
je 0x519383
mov eax, dword [ebp]
push ecx
push dword [esi + 0x40]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x541740]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x24]
cmp eax, ecx
jne 0x51908d
movzx ecx, word [esi + 0x26]
test cx, cx
je 0x5193ae
mov eax, dword [ebp]
push ecx
push dword [esi + 0x44]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x541740]
mov ecx, ebp
call edi
movzx ecx, word [esi + 0x26]
cmp eax, ecx
jne 0x51908d
movzx ecx, word [esi + 0x20]
mov edi, 0x800
mov eax, dword [esi + 0x48]
mov byte [ecx + eax], 0
test word [esi + 4], di
jne 0x519444
mov edx, dword [esi + 0x40]
test edx, edx
jne 0x5193d4
mov dword [esi + 0x4c], edx
jmp 0x51941f
movzx eax, word [esi + 0x24]
lea edi, [edx - 4]
add edi, eax
cmp edx, edi
jae 0x519413
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
shl cx, 8
or cx, ax
mov eax, 0x7075
cmp cx, ax
je 0x51947f
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 0x5193e1
mov dword [esi + 0x4c], 0
mov edi, 0x800
cmp dword [esi + 0x4c], 0
jne 0x51943a
movzx eax, byte [esi + 1]
push eax
push dword [esi + 0x48]
call fcn.004df590
test al, al
je 0x51943a
or word [esi + 4], di
test word [esi + 4], di
je 0x519588
push dword [esi + 0x48]
call fcn.0052cc68
add esp, 4
mov dword [esi + 0x4c], eax
test eax, eax
je 0x518ec4
push eax
mov ecx, ebx
call fcn.005113c0
mov edi, eax
test edi, edi
je 0x5195d2
push dword [esi + 0x48]
call fcn.00525b95
add esp, 4
mov dword [esi + 0x48], edi
jmp 0x5195d2
mov dword [esi + 0x4c], 0
test edx, edx
je 0x51941a
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 + 0x3c], eax
ja 0x51941a
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 + 0x4c], ecx
mov ecx, edx
lea eax, [ecx + 1]
mov dword [esp + 0x10], eax
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5194e0
sub ecx, dword [esp + 0x10]
push ecx
push edx
push 0xffffffffffffffff
call fcn.004761b0
not eax
cmp eax, dword [esp + 0x4c]
jne 0x51941a
mov eax, dword [esp + 0x3c]
add eax, 0xfffffffb
movzx eax, ax
mov dword [esp + 0x10], eax
test ax, ax
jne 0x519546
movzx eax, word [esi + 0x20]
inc eax
push eax
call fcn.00525bb0
add esp, 4
test eax, eax
je 0x51941a
mov edx, dword [esi + 0x48]
mov edi, eax
mov edi, edi
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edi], cl
lea edi, [edi + 1]
test cl, cl
jne 0x519530
mov dword [esi + 0x4c], eax
jmp 0x51941a
movzx eax, ax
inc eax
push eax
call fcn.00525bb0
add esp, 4
mov dword [esp + 0x3c], eax
test eax, eax
je 0x51941a
mov edx, dword [esp + 0x10]
movzx ecx, dx
push ecx
push edi
push eax
call fcn.005299f0
mov eax, dword [esp + 0x48]
add esp, 0xc
mov edx, dword [esp + 0x10]
movzx ecx, dx
mov byte [eax + ecx], 0
mov dword [esi + 0x4c], eax
jmp 0x51941a
cmp dword [esi + 0x48], 0
movzx ecx, word [esi]
je 0x5195ad
movzx eax, cl
push eax
shr ecx, 8
push ecx
call fcn.004df5c0
test al, al
je 0x5195ad
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 0x5195d2
movzx eax, cl
push eax
shr ecx, 8
push ecx
call fcn.004df5c0
test al, al
je 0x5195d2
mov eax, dword [esi + 0x44]
push eax
push eax
call dword [sym.imp.USER32.dll_OemToCharA]
mov dword [ebx + 0x64b78c], 0
mov edx, dword [esi + 0x40]
test edx, edx
je 0x519854
movzx eax, word [esi + 0x24]
lea edi, [edx - 4]
add edi, eax
cmp edx, edi
jae 0x519854
jmp 0x519600
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
shl cx, 8
or cx, ax
cmp cx, 1
je 0x51962f
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 0x519600
jmp 0x519854
mov dword [ebx + 0x64b78c], 1
lea edi, [edx + 4]
cmp dword [esi + 0x18], 0xffffffff
mov dword [esp + 0x10], edi
jne 0x5196e2
cmp dword [esi + 0x1c], 0
jne 0x5196e2
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 0x519784
cmp dword [esi + 0x14], 0
jne 0x519784
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 0x519822
cmp dword [esi + 0x34], 0
jne 0x519822
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 + 0x44]
mov ebp, dword [esp + 0x48]
jne 0x519854
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 0x519866
cmp dword [ebx + 0x64b7c4], 1
je 0x51986f
cmp dword [ebx + 0x6486b0], 0
je 0x51987d
mov eax, dword [esp + 0x24]
add dword [esi + 0x30], eax
mov eax, dword [esp + 0x28]
adc dword [esi + 0x34], eax
cmp dword [esi + 0x28], 0
jne 0x5198ca
cmp dword [esp + 0x34], 0
je 0x5198a2
mov eax, dword [esi + 0x34]
cmp eax, dword [ebx + 0x64b7a4]
ja 0x5198ca
jb 0x5198a2
mov eax, dword [esi + 0x30]
cmp eax, dword [ebx + 0x64b7a0]
jae 0x5198ca
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x30]
cmp ecx, dword [esp + 0x30]
ja 0x5198ca
jb 0x5198b6
cmp eax, dword [esp + 0x1c]
jae 0x5198ca
mov dword [ebx + 0x64b7a0], eax
mov dword [ebx + 0x64b7a4], ecx
mov dword [esp + 0x34], 1
inc dword [ebx + 0x64b844]
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 0x5198fd
push eax
call fcn.0051bf10
jmp 0x519905
push dword [esi + 0x48]
call fcn.0051bc60
mov dword [esi + 0x54], eax
lea edi, [esi + 0x64]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], edi
mov dword [eax], esi
mov dword [edi], 0
jmp 0x51992a
cmp dword [ebx + 0x6486a8], 1
jne 0x519a0c
push ebp
mov ecx, ebx
call fcn.00515530
test eax, eax
jne 0x518ff0
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push dword [esp + 0x14]
call fcn.00525b95
add esp, 4
xor ecx, ecx
lea ebx, [ebx]
mov al, byte [ecx + ebx + 0x1f0]
cmp al, byte [ecx + 0x557a9c]
jne 0x519991
inc ecx
cmp ecx, 4
jl 0x519960
jne 0x519991
inc dword [ebx + 0x64b7c8]
mov edi, dword [ebx + 0x64b7c8]
mov eax, dword [ebx + 0x64b7c4]
cmp edi, eax
jb 0x518ea6
mov eax, dword [ebx + 0x64b844]
xor esi, esi
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
cmp eax, edx
jne 0x5199ad
cmp esi, ecx
je 0x518611
movzx eax, ax
xor esi, esi
cmp eax, edx
jne 0x5199be
cmp esi, ecx
je 0x518611
push dword [ebx + 0x64b794]
mov ecx, 0x5b68fc
call fcn.0047a9d0
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
push edi
mov ecx, 0x5b68fc
call fcn.0047b330
mov ecx, dword [esp + 0x84]
mov eax, 9
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0051dca8
add esp, 0x78
ret
mov eax, dword [ebp]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x541740]
mov ecx, ebp
call esi
push dword [esp + 0x14]
jmp 0x5199c4