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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
xor esi, esi
push esi
push esi
push esi
push 0x14
push eax
mov byte [esp + 0x27], 0
mov dword [esp + 0x3c], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], eax
call fcn.004cd400
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + 0x10]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x14]
lea edi, [ecx + ecx*2]
mov ecx, dword [ebp + 0x1c]
shl edi, 4
add edi, eax
mov dword [esp + 0x40], edx
mov edx, dword [ecx + 0x40]
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x14], esi
mov dword [esp + 0x34], edi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x48], esi
cmp ebx, edi
jae 0x51407f
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
or edx, dword [eax + 4]
mov ecx, dword [ebx]
mov dword [esp + 0x30], ecx
jne 0x513f95
test byte [ebx + 0xa], 2
jne 0x513f95
test byte [ecx + 4], 1
jne 0x513f95
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x30]
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x60]
push eax
mov byte [esp + 0x78], 3
mov dword [esp + 0x68], 0x4e18d0
mov dword [esp + 0x6c], 0x4e19e0
mov dword [esp + 0x7c], ecx
call fcn.004dda50
add esp, 8
cmp byte [esp + 0x70], 0
je 0x513f95
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x30]
mov eax, dword [ecx]
push 0
push 0
push edx
push eax
call fcn.004e0c80
mov ecx, dword [esp + 0x38]
mov edx, dword [ebp + 8]
push ecx
mov ecx, dword [edx]
call fcn.004e07f0
add esp, 0x14
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, ebx
call fcn.00513e20
add esp, 8
test eax, eax
je 0x514074
mov eax, dword [ebx + 0x1c]
cmp eax, 0x40
mov dword [esp + 0x30], eax
jl 0x513fd0
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], SysStringLen
jmp 0x513fe8
mov ecx, dword [esp + 0x30]
mov eax, 1
xor edx, edx
call fcn.005835c0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
cmp byte [esp + 0x13], 0
jne 0x51401b
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov edx, dword [ecx + 4]
mov ecx, dword [ecx]
shl eax, 4
mov eax, dword [eax + edx]
push eax
push ecx
push str.automatic_index_on__s__s_
push 0x11c
call fcn.004b1a80
add esp, 0x10
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
and eax, dword [esp + 0x48]
and ecx, esi
or eax, ecx
jne 0x514074
mov edx, dword [ebp + 8]
mov eax, dword [esp + 0x14]
mov ecx, dword [edx]
mov edi, dword [esp + 0x1c]
inc eax
push ecx
mov dword [esp + 0x34], eax
call fcn.00514e90
add esp, 4
test eax, eax
jne 0x51499e
mov ecx, dword [esp + 0x14]
mov edx, edi
mov eax, dword [edx + 0x30]
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov dword [eax + ecx*4], ebx
mov eax, dword [esp + 0x20]
or dword [esp + 0x48], eax
or esi, dword [esp + 0x24]
mov dword [esp + 0x14], edx
add ebx, 0x30
cmp ebx, edi
jb 0x513f16
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov word [eax + 0x28], cx
mov word [eax + 0x18], cx
mov dword [eax + 0x24], 0x4241
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x40]
mov ebx, dword [eax + 0x44]
mov eax, dword [esp + 0x48]
not eax
and eax, ecx
mov ecx, dword [esp + 0x2c]
not esi
mov dword [esp + 0x50], eax
movzx eax, word [ecx + 0x2a]
or esi, 0x80000000
and esi, ebx
mov edx, 0x3f
cmp dx, ax
mov dword [esp + 0x54], esi
mov dword [esp + 0x30], eax
jge 0x5140d3
mov eax, edx
jmp 0x5140d4
cwde
xor esi, esi
mov dword [esp + 0x20], eax
test eax, eax
jle 0x514105
mov edi, edi
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.005835c0
and eax, dword [esp + 0x50]
and edx, dword [esp + 0x54]
or eax, edx
je 0x5140fe
inc dword [esp + 0x14]
inc esi
cmp esi, dword [esp + 0x20]
jl 0x5140e0
and ebx, 0x80000000
xor eax, eax
or eax, ebx
je 0x514122
movsx eax, word [esp + 0x30]
mov ecx, dword [esp + 0x14]
lea edx, [ecx + eax - 0x3f]
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x30]
push eax
mov eax, dword [ebp + 8]
inc ecx
push ecx
mov ecx, dword [eax]
xor edx, edx
call fcn.004eddc0
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
je 0x51499e
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov dword [ecx + 0x20], eax
mov dword [eax], str.auto_index
mov dword [eax + 0xc], edx
mov eax, dword [ebp + 0xc]
mov esi, dword [eax + 0x14]
xor ebx, ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
cmp esi, edi
jae 0x51424b
jmp 0x514180
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
push ecx
push edx
mov ecx, esi
call fcn.00513e20
add esp, 8
test eax, eax
je 0x51423c
mov ecx, dword [esi + 0x1c]
cmp ecx, 0x40
jl 0x5141ae
xor eax, eax
mov edx, accept
jmp 0x5141ba
mov eax, 1
xor edx, edx
call fcn.005835c0
mov ecx, eax
and ecx, dword [esp + 0x48]
mov edi, edx
and edi, dword [esp + 0x4c]
or ecx, edi
jne 0x514238
or dword [esp + 0x48], eax
mov eax, dword [esp + 0x18]
or dword [esp + 0x4c], edx
mov edx, dword [eax + 4]
mov ecx, dword [esi]
mov ax, word [esi + 0x1c]
mov word [edx + ebx*2], ax
mov eax, dword [ecx + 0xc]
mov edi, dword [ecx + 0x10]
mov ecx, 0x100
test dword [eax + 4], ecx
je 0x5141f9
mov ecx, dword [ebp + 8]
push ecx
jmp 0x514218
test edi, edi
je 0x514202
test dword [edi + 4], ecx
jne 0x514212
mov ecx, dword [ebp + 8]
push ecx
call fcn.004dfa90
add esp, 4
test eax, eax
jne 0x514224
mov edx, dword [ebp + 8]
mov eax, edi
push edx
call fcn.004dfa90
add esp, 4
test eax, eax
je 0x514228
mov eax, dword [eax]
jmp 0x51422d
mov eax, 0x59d090
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0x20]
mov dword [edx + ebx*4], eax
inc ebx
mov edi, dword [esp + 0x34]
add esi, 0x30
cmp esi, edi
jb 0x514180
mov dword [esp + 0x30], ebx
xor esi, esi
cmp dword [esp + 0x20], esi
jle 0x51428e
mov edi, dword [esp + 0x18]
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.005835c0
and eax, dword [esp + 0x50]
and edx, dword [esp + 0x54]
or eax, edx
je 0x514283
mov eax, dword [edi + 4]
mov word [eax + ebx*2], si
mov ecx, dword [edi + 0x20]
mov dword [ecx + ebx*4], 0x59d090
inc ebx
inc esi
cmp esi, dword [esp + 0x20]
jl 0x514257
mov dword [esp + 0x30], ebx
mov edx, dword [ebp + 0x10]
mov ecx, dword [edx + 0x44]
and ecx, 0x80000000
xor eax, eax
or eax, ecx
je 0x5142d6
mov ecx, dword [esp + 0x2c]
mov eax, 0x3f
mov edx, eax
cmp dx, word [ecx + 0x2a]
jge 0x5142d6
mov edi, dword [esp + 0x18]
mov edx, dword [edi + 4]
mov word [edx + ebx*2], ax
mov edx, dword [edi + 0x20]
mov dword [edx + ebx*4], 0x59d090
movsx edx, word [ecx + 0x2a]
inc eax
inc ebx
cmp eax, edx
jl 0x5142b5
mov dword [esp + 0x30], ebx
jmp 0x5142da
mov edi, dword [esp + 0x18]
mov eax, dword [edi + 4]
mov esi, dword [esp + 0x38]
or ecx, 0xffffffff
mov word [eax + ebx*2], cx
mov edx, dword [edi + 0x20]
mov eax, dword [ebp + 8]
mov dword [edx + ebx*4], 0x59d090
mov ecx, dword [eax + 0x28]
mov edx, dword [ebp + 0x1c]
mov dword [edx + 8], ecx
inc dword [eax + 0x28]
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x88]
mov ebx, dword [esi + 0xc]
mov edx, dword [edx + 8]
inc ecx
cmp dword [ebx + 0x30], eax
jg 0x514327
push 0
push ecx
push edx
push 0x6b
call fcn.004cd3c0
add esp, 0x10
jmp 0x514353
lea ebx, [eax + 1]
mov dword [esi + 0x88], ebx
mov ebx, dword [esi + 0x58]
lea eax, [eax + eax*4]
lea eax, [ebx + eax*4]
xor ebx, ebx
mov dword [eax + 8], ecx
xor ecx, ecx
mov byte [eax], 0x6b
mov word [eax + 2], bx
mov dword [eax + 4], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 8]
push edi
push eax
call fcn.004eff80
xor edx, edx
add esp, 8
cmp eax, edx
je 0x514395
mov ecx, dword [ebx]
cmp byte [ecx + 0x45], dl
je 0x51437e
push 0xfffffffffffffff7
call fcn.004cdcf0
add esp, 4
xor edx, edx
jmp 0x514395
mov ecx, dword [ebx + 0x88]
mov edi, dword [ebx + 0x58]
lea ecx, [ecx + ecx*4]
lea ecx, [edi + ecx*4 - 0x14]
mov byte [ecx + 1], 0xf7
mov dword [ecx + 0x10], eax
mov eax, dword [ebp + 8]
inc dword [eax + 0x3c]
mov ecx, dword [ebp + 0x1c]
movzx eax, byte [ecx + 0x2c]
mov edi, dword [ebp + 0xc]
mov edi, dword [edi]
mov edi, dword [edi + 4]
lea eax, [eax + eax*4]
shl eax, 4
test byte [eax + edi + 0x30], 0x10
lea edi, [eax + edi + 8]
mov dword [esp + 0x34], edi
je 0x5144a5
mov ecx, dword [esi + 0x88]
mov edx, dword [esi + 0xc]
cmp dword [edx + 0x30], ecx
mov ebx, dword [edi + 0x1c]
jg 0x5143e8
push 0
push 0
push 0
push 0x38
call fcn.004cd3c0
add esp, 0x10
xor edx, edx
jmp 0x514414
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
mov eax, dword [esi + 0x58]
lea edx, [ecx + ecx*4]
lea eax, [eax + edx*4]
xor edx, edx
mov byte [eax], 0x38
mov word [eax + 2], dx
mov dword [eax + 4], edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edx
mov byte [eax + 1], dl
mov eax, ecx
mov ecx, dword [esi + 0xc]
mov edi, dword [edi + 0x18]
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x88]
cmp dword [ecx + 0x30], eax
jg 0x514439
push edi
push 0
push ebx
push 0xf
call fcn.004cd3c0
add esp, 0x10
jmp 0x514463
lea ecx, [eax + 1]
mov dword [esi + 0x88], ecx
mov ecx, dword [esi + 0x58]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
xor ecx, ecx
mov byte [eax], 0xf
mov word [eax + 2], cx
mov dword [eax + 4], ebx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], edx
mov byte [eax + 1], cl
mov ecx, dword [esi + 0x88]
mov edx, dword [esi + 0xc]
cmp dword [edx + 0x30], ecx
jg 0x514482
push 0
push 0
push ebx
push 0x10
call fcn.004cd3c0
add esp, 0x10
jmp 0x5144f1
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
mov eax, dword [esi + 0x58]
lea edx, [ecx + ecx*4]
lea eax, [eax + edx*4]
xor edx, edx
mov byte [eax], 0x10
mov word [eax + 2], dx
mov dword [eax + 4], ebx
mov byte [eax + 1], dl
jmp 0x5144e6
mov edi, dword [ecx + 4]
mov ecx, dword [esi + 0x88]
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x5144c5
push edx
push edx
push edi
push 0x25
call fcn.004cd3c0
add esp, 0x10
jmp 0x5144f1
mov ebx, dword [esi + 0x58]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea eax, [ecx + ecx*4]
lea eax, [ebx + eax*4]
xor ebx, ebx
mov byte [eax], 0x25
mov word [eax + 2], bx
mov dword [eax + 4], edi
mov byte [eax + 1], bl
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edx
mov eax, ecx
cmp dword [esp + 0x28], 0
mov dword [esp + 0x20], eax
je 0x51465e
mov esi, dword [esi + 0xc]
mov eax, dword [esi + 0x44]
lea edx, [eax - 1]
lea ecx, [eax + 1]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x14], eax
mov dword [esi + 0x44], ecx
test eax, edx
jne 0x514624
mov edi, dword [esi + 0x48]
mov esi, dword [esi]
xor ecx, ecx
lea ebx, [eax*8 + 4]
test edi, edi
jne 0x51453f
push ecx
push ebx
mov eax, esi
call fcn.004afe20
add esp, 8
jmp 0x514570
cmp edi, dword [esi + 0x120]
jb 0x514565
cmp edi, dword [esi + 0x124]
jae 0x514565
movzx eax, word [esi + 0x104]
cdq
cmp ecx, edx
ja 0x514565
jb 0x514561
cmp ebx, eax
ja 0x514565
mov ebx, edi
jmp 0x514572
push ecx
push ebx
push edi
call fcn.004aff20
add esp, 0xc
mov ebx, eax
test ebx, ebx
jne 0x514617
test edi, edi
je 0x514617
test esi, esi
je 0x5145bf
cmp dword [esi + 0x1c8], ebx
je 0x514599
mov eax, edi
mov ecx, esi
call fcn.004afa70
jmp 0x514617
cmp edi, dword [esi + 0x120]
jb 0x5145bf
cmp edi, dword [esi + 0x124]
jae 0x5145bf
mov eax, dword [esi + 0x11c]
mov dword [edi], eax
dec dword [esi + 0x108]
mov dword [esi + 0x11c], edi
jmp 0x514617
cmp dword [0x5eb9e0], 0
je 0x51460d
mov eax, dword [0x5f0898]
test eax, eax
je 0x5145db
push eax
call dword [0x5eba38]
add esp, 4
push edi
call dword [0x5eba14]
sub dword [0x5f06e8], eax
dec dword [0x5f070c]
add esp, 4
push edi
call dword [0x5eba0c]
mov eax, dword [0x5f0898]
add esp, 4
test eax, eax
je 0x514617
push eax
call dword [0x5eba40]
jmp 0x514614
push edi
call dword [0x5eba0c]
add esp, 4
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x48], ebx
mov esi, ecx
mov esi, dword [esi + 0x48]
test esi, esi
je 0x514632
mov dword [esi + eax*4], 0xffffffff
mov edx, dword [esp + 0x28]
mov esi, dword [ebp + 8]
or eax, 0xffffffff
sub eax, dword [esp + 0x14]
push 0x10
push eax
push edx
push esi
mov dword [esp + 0x4c], eax
call fcn.004e5b10
mov eax, dword [esp + 0x2c]
add esp, 0x10
or dword [eax + 0x24], 0x20000
jmp 0x514661
mov esi, dword [ebp + 8]
mov al, byte [esi + 0x13]
test al, al
jne 0x514674
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x14], eax
jmp 0x514687
dec al
movzx ecx, al
mov byte [esi + 0x13], al
mov edx, dword [esi + ecx*4 + 0x15c]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x14]
mov esi, dword [ebp + 0x1c]
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov ebx, dword [ebp + 8]
push 0
push 0
push 0
push eax
push ecx
push edx
xor eax, eax
mov edi, ebx
call fcn.004f1c20
mov ecx, dword [esi + 8]
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 0xc]
mov edi, eax
mov eax, dword [esi + 0x88]
add esp, 0x18
cmp dword [edx + 0x30], eax
jg 0x5146d8
mov eax, dword [esp + 0x14]
push 0
push eax
push ecx
push 0x7e
call fcn.004cd3c0
add esp, 0x10
jmp 0x514708
lea edx, [eax + 1]
mov dword [esi + 0x88], edx
mov edx, dword [esi + 0x58]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x14]
xor edx, edx
mov dword [eax + 8], ecx
xor ecx, ecx
mov byte [eax], 0x7e
mov word [eax + 2], dx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], dl
mov eax, dword [esi + 0x88]
test eax, eax
jle 0x514722
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x58]
mov ecx, 0x10
mov word [eax + edx*4 - 0x12], cx
cmp dword [esp + 0x28], 0
je 0x514748
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0x48]
test eax, eax
je 0x514748
mov edx, dword [esp + 0x3c]
lea ecx, [edx*4 + 4]
mov edx, dword [esi + 0x88]
sub eax, ecx
mov dword [eax], edx
mov eax, dword [esp + 0x34]
test byte [eax + 0x28], 0x10
je 0x51480a
mov eax, dword [esp + 0x40]
test eax, eax
jge 0x514765
mov eax, dword [esi + 0x88]
dec eax
mov ecx, dword [esi]
cmp byte [ecx + 0x45], 0
je 0x514774
mov eax, 0x5ef850
jmp 0x51477d
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + edx*4]
mov ecx, dword [esp + 0x30]
mov edx, dword [ebp + 0x1c]
add edi, ecx
mov ecx, dword [esp + 0x34]
mov dword [eax + 8], edi
mov eax, dword [edx + 4]
mov edi, dword [ecx + 0x20]
mov edx, dword [esp + 0x20]
push 1
push eax
mov eax, ebx
call fcn.00513d80
mov eax, dword [esi + 0x88]
mov edx, dword [esi + 0xc]
add esp, 8
cmp dword [edx + 0x30], eax
jg 0x5147d2
mov eax, dword [esp + 0x20]
push 0
push eax
push 0
push 0xd
call fcn.004cd3c0
mov eax, dword [esp + 0x44]
add esp, 0x10
and dword [eax + 0x28], 0xffffffef
jmp 0x51485f
lea ecx, [eax + 1]
mov dword [esi + 0x88], ecx
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x20]
xor ecx, ecx
mov byte [eax], 0xd
mov word [eax + 2], cx
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
mov eax, dword [esp + 0x34]
and dword [eax + 0x28], 0xffffffef
jmp 0x51485f
mov eax, dword [ebp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [eax + 4]
mov eax, dword [esi + 0x88]
mov edi, dword [esi + 0xc]
inc ecx
cmp dword [edi + 0x30], eax
jg 0x514833
push 0
push ecx
push edx
push 7
call fcn.004cd3c0
add esp, 0x10
jmp 0x51485f
lea edi, [eax + 1]
mov dword [esi + 0x88], edi
mov edi, dword [esi + 0x58]
lea eax, [eax + eax*4]
lea eax, [edi + eax*4]
xor edi, edi
mov dword [eax + 8], ecx
xor ecx, ecx
mov byte [eax], 7
mov word [eax + 2], di
mov dword [eax + 4], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
mov eax, dword [esi + 0x88]
test eax, eax
jle 0x514879
mov edx, dword [esi + 0x58]
lea ecx, [eax + eax*4]
mov eax, 3
mov word [edx + ecx*4 - 0x12], ax
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x88]
test eax, eax
jge 0x51488a
lea eax, [ecx - 1]
mov edx, dword [esi]
cmp byte [edx + 0x45], 0
je 0x514899
mov eax, 0x5ef850
jmp 0x5148a2
mov edx, dword [esi + 0x58]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
cmp dword [esp + 0x14], 0
mov dword [eax + 8], ecx
je 0x5148eb
mov dl, byte [ebx + 0x13]
cmp dl, 8
jae 0x5148eb
xor eax, eax
lea ecx, [ebx + 0x94]
cmp byte [ebx + 0x19], al
jbe 0x5148da
mov edi, dword [esp + 0x14]
cmp dword [ecx + 0xc], edi
je 0x51495c
movzx edi, byte [ebx + 0x19]
inc eax
add ecx, 0x14
cmp eax, edi
jl 0x5148c1
mov ecx, dword [esp + 0x14]
movzx eax, dl
mov dword [ebx + eax*4 + 0x15c], ecx
inc byte [ebx + 0x13]
dec dword [ebx + 0x3c]
xor edx, edx
mov dword [esp + 0x40], edx
cmp byte [ebx + 0x19], dl
jbe 0x514972
lea ecx, [ebx + 0x9a]
nop
mov eax, dword [ecx + 2]
cmp eax, dword [ebx + 0x3c]
jle 0x514962
cmp byte [ecx], 0
je 0x514924
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x514924
mov edi, dword [ecx + 6]
movzx eax, al
mov dword [ebx + eax*4 + 0x15c], edi
inc byte [ebx + 0x13]
dec byte [ebx + 0x19]
movzx eax, byte [ebx + 0x19]
cmp edx, eax
jge 0x51496a
lea edx, [eax + eax*4]
lea eax, [ebx + edx*4 + 0x94]
mov edx, dword [eax]
mov dword [ecx - 6], edx
mov edx, dword [eax + 4]
mov dword [ecx - 2], edx
mov edx, dword [eax + 8]
mov dword [ecx + 2], edx
mov edx, dword [eax + 0xc]
mov dword [ecx + 6], edx
mov eax, dword [eax + 0x10]
mov edx, dword [esp + 0x40]
mov dword [ecx + 0xa], eax
jmp 0x51496a
mov byte [ecx + 6], 1
jmp 0x5148eb
inc edx
mov dword [esp + 0x40], edx
add ecx, 0x14
movzx eax, byte [ebx + 0x19]
cmp edx, eax
jl 0x514900
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x88]
test eax, eax
jge 0x514983
lea eax, [ecx - 1]
mov edx, dword [esi]
cmp byte [edx + 0x45], 0
je 0x514992
mov eax, 0x5ef850
jmp 0x51499b
mov edx, dword [esi + 0x58]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x28]
test eax, eax
je 0x5149b5
push eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
push ecx
call fcn.004e0aa0
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret