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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
push ebx
mov ebx, ecx
mov byte [esp + 0xb], 0
push esi
xor ecx, ecx
mov dword [esp + 0x10], ebx
xor eax, eax
mov dword [esp + 0x54], ecx
mov esi, dword [ebx + 8]
push edi
mov edi, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x54], edi
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x64], ecx
cmp dword [esi + 0x78], ecx
jg 0x506499
push eax
push eax
push eax
lea edx, [eax + 0x11]
mov ecx, esi
call fcn.00499040
add esp, 0xc
mov dword [esp + 0x64], eax
jmp 0x5064cc
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x11
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebp + 8]
xorps xmm0, xmm0
mov ecx, dword [ebp + 0x14]
mov edi, dword [edi + 0x18]
mov dword [esp + 0x24], 0
mov eax, dword [edx + 0x10]
mov ecx, dword [ecx + 0x4c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x30], ecx
movlpd qword [esp + 0x68], xmm0
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edi
mov dword [esp + 0x50], eax
cmp edi, eax
jae 0x506923
mov eax, dword [esp + 0x6c]
lea ecx, [edx + 0x2c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x40], 1
mov dword [esp + 0x34], eax
test byte [edi + 0xa], 2
mov esi, dword [edi]
jne 0x506777
test byte [edx + 0x24], 8
je 0x50654e
test byte [esi + 4], 1
je 0x506777
mov ecx, dword [esp + 0x38]
mov eax, 3
mov word [esp + 0x88], ax
mov dword [esp + 0x78], fcn.004b28f0
mov dword [esp + 0x7c], 0x4b27d0
mov eax, dword [ecx]
mov dword [esp + 0x8c], eax
test esi, esi
je 0x5065ba
mov edx, esi
lea ecx, [esp + 0x74]
call fcn.004acb00
cmp word [esp + 0x88], 0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
je 0x506774
mov ecx, dword [ebx]
mov edx, esi
push 0
push 0
call fcn.004b1740
mov ecx, dword [esp + 0x40]
add esp, 8
mov esi, eax
mov dword [esp + 0x48], eax
jmp 0x5065c0
xor esi, esi
mov dword [esp + 0x48], esi
mov eax, dword [esp + 0x28]
mov edx, dword [ebx]
mov dword [esp + 0x60], edx
mov dword [esp + 0x18], ecx
test eax, eax
je 0x506770
test esi, esi
je 0x506774
mov eax, dword [eax + 4]
lea ecx, [esi + 4]
and eax, 0x20000001
cmp eax, 0x20000000
je 0x506606
mov eax, dword [ecx]
and eax, 0x20000001
mov dword [esp + 0x4c], ecx
cmp eax, 0x20000000
jne 0x5066d5
cmp byte [ebx + 0xd0], 2
mov dword [esp + 0x4c], ecx
jae 0x5066d5
mov edx, dword [esp + 0x28]
mov ecx, ebx
call fcn.004b15b0
mov edx, esi
mov ecx, ebx
call fcn.004b15b0
lea edx, [esp + 0x4c]
mov dword [esp + 0x4c], 0
mov ecx, 0x597910
call fcn.004789e0
mov ecx, dword [esp + 0x60]
xor edx, edx
mov esi, eax
test esi, esi
push 0
sete dl
lea edx, [edx*2 + 0x34]
push edx
call fcn.00474ba0
mov edx, eax
add esp, 8
mov dword [esp + 0x28], edx
test edx, edx
je 0x5066c8
push 0x34
push 0
push edx
call fcn.00552ad0
mov edx, dword [esp + 0x34]
or eax, 0xffffffff
add esp, 0xc
mov byte [edx], 0x9b
mov word [edx + 0x22], ax
test esi, esi
je 0x5066b6
mov eax, dword [esp + 0x4c]
mov ecx, 0x20800400
test eax, eax
mov dword [edx + 8], eax
mov esi, 0x10800400
mov dword [edx + 0x18], 1
cmovne ecx, esi
or dword [edx + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
jmp 0x506774
lea eax, [edx + 0x34]
mov dword [edx + 8], eax
mov word [eax], 0x30
mov dword [edx + 0x18], 1
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
jmp 0x506774
push 0
push 0x34
mov ecx, edx
call fcn.00474ba0
mov esi, eax
add esp, 8
test esi, esi
je 0x506752
push 0x34
push 0
push esi
call fcn.00552ad0
mov ecx, dword [esp + 0x58]
or eax, 0xffffffff
mov edx, dword [esp + 0x54]
add esp, 0xc
mov word [esi + 0x22], ax
mov eax, dword [esp + 0x28]
mov byte [esi], 0x2c
mov dword [esi + 0x10], edx
mov ecx, dword [ecx]
and ecx, 0x200104
mov dword [esi + 0xc], eax
or ecx, dword [esi + 4]
mov dword [esi + 4], ecx
mov eax, dword [eax + 4]
and eax, 0x200104
or eax, ecx
mov ecx, esi
mov dword [esi + 4], eax
call fcn.004b0870
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x506768
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.00477d90
add esp, 0xc
jmp 0x506768
mov edx, dword [esp + 0x28]
mov ecx, dword [ebx]
call fcn.004b1450
mov edx, dword [esp + 0x48]
mov ecx, dword [ebx]
call fcn.004b1450
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], esi
mov edx, dword [ebp + 8]
mov eax, dword [edi + 0x14]
cmp eax, dword [ecx]
jne 0x506905
movzx ecx, word [edi + 0xc]
test cl, 0x82
je 0x506901
test byte [edx + 0x24], 8
je 0x5067a5
mov eax, dword [edi]
test byte [eax + 4], 1
jne 0x5067a5
test cl, cl
js 0x506901
mov ecx, dword [ebp + 0xc]
mov eax, dword [edi + 0x24]
and ecx, dword [edi + 0x20]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x506901
mov edx, dword [edi + 0x18]
test edx, edx
js 0x506901
mov eax, dword [ebp + 8]
add edx, edx
mov ecx, dword [edi]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dl, byte [eax + edx*8 + 8]
call fcn.004afe40
test eax, eax
je 0x506901
mov edx, dword [edi + 0x18]
xor esi, esi
cmp edx, 0x40
jl 0x5067f6
mov dword [esp + 0x48], SysStringLen
jmp 0x50680f
mov eax, edx
xor ecx, ecx
bts esi, eax
cmp eax, 0x20
cmovae ecx, esi
xor esi, ecx
cmp eax, 0x40
cmovae ecx, esi
mov dword [esp + 0x48], ecx
cmp byte [esp + 0x13], 0
jne 0x50683b
mov ecx, dword [esp + 0x44]
add edx, edx
mov eax, dword [ecx + 4]
push dword [eax + edx*8]
push dword [ecx]
push str.automatic_index_on__s__s_
push 0x11c
call fcn.00477370
add esp, 0x10
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0x48]
mov ecx, esi
and ecx, dword [esp + 0x34]
and eax, dword [esp + 0x20]
or ecx, eax
jne 0x506901
mov edx, dword [esp + 0x30]
mov ecx, dword [ebx]
mov dword [esp + 0x60], ecx
movzx eax, word [edx + 0x34]
mov edx, dword [esp + 0x40]
cmp eax, edx
jge 0x5068d3
lea eax, [edx + 7]
and eax, 0xfffffff8
mov dword [esp + 0x4c], eax
shl eax, 2
push 0
push eax
call fcn.00474ba0
add esp, 8
mov dword [esp + 0x5c], eax
test eax, eax
je 0x50735c
mov edx, dword [esp + 0x30]
movzx ecx, word [edx + 0x34]
shl ecx, 2
push ecx
push dword [edx + 0x38]
push eax
call fcn.00552550
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [ecx + 0x38]
lea eax, [ecx + 0x40]
cmp edx, eax
je 0x5068be
mov ecx, dword [esp + 0x60]
call fcn.004747b0
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x40]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x4c]
mov word [ecx + 0x34], ax
jmp 0x5068d7
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x38]
inc edx
mov ecx, dword [esp + 0x24]
or dword [esp + 0x34], esi
mov esi, dword [esp + 0x20]
mov dword [esp + 0x40], edx
mov dword [eax + ecx*4], edi
inc ecx
or esi, dword [esp + 0x48]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], esi
jmp 0x506909
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov edx, dword [ebp + 8]
add edi, 0x30
cmp edi, dword [esp + 0x50]
jb 0x506532
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
jmp 0x50692b
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x24]
not esi
movzx eax, ax
or esi, 0x80000000
mov word [ecx + 0x30], ax
not edi
mov word [ecx + 0x18], ax
mov eax, dword [ebp + 8]
mov dword [ecx + 0x2c], 0x4241
mov edx, dword [edx + 0x38]
and edi, edx
mov dword [esp + 0x60], edx
and esi, dword [eax + 0x3c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], esi
mov esi, 0x3f
mov dword [esp + 0x34], edi
movzx eax, word [eax + 0x22]
movsx ecx, ax
mov dword [esp + 0x4c], ecx
cmp si, ax
jge 0x506985
mov edi, esi
xor esi, esi
mov dword [esp + 0x18], edi
jmp 0x506995
mov edi, ecx
mov dword [esp + 0x4c], ecx
xor esi, esi
mov dword [esp + 0x18], edi
test edi, edi
jle 0x5069d6
mov ebx, dword [esp + 0x20]
nop dword [eax]
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x34]
and ecx, ebx
or edx, ecx
je 0x5069c5
inc dword [esp + 0x24]
inc esi
cmp esi, edi
jl 0x5069a0
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x60]
mov eax, dword [ebp + 8]
cmp dword [eax + 0x3c], 0
jg 0x5069f4
jl 0x5069e5
test edx, edx
jae 0x5069f4
mov eax, dword [esp + 0x24]
add eax, 0xffffffc1
add eax, ecx
mov dword [esp + 0x24], eax
jmp 0x5069f8
mov eax, dword [esp + 0x24]
mov ecx, dword [ebx]
movzx eax, ax
inc eax
movzx eax, ax
movsx esi, ax
mov dword [esp + 0x5c], eax
lea eax, [esi*4 + 9]
add eax, esi
lea edi, [esi*4 + 7]
and eax, 0xfffffff8
and edi, 0xfffffff8
add eax, 0x48
add eax, edi
mov dword [esp + 0x60], eax
cdq
push edx
push eax
test ecx, ecx
je 0x506a35
call fcn.00474ba0
jmp 0x506a3a
call fcn.004744e0
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
je 0x50735c
push dword [esp + 0x60]
push 0
push eax
call fcn.00552ad0
mov ecx, dword [esp + 0x38]
add esp, 0xc
lea edx, [ecx + 4]
xorps xmm0, xmm0
mov dword [esp + 0x38], edx
movlpd qword [esp + 0x68], xmm0
lea eax, [ecx + 0x48]
mov dword [esp + 0x60], edx
mov dword [ecx + 0x20], eax
add eax, edi
mov dword [ecx + 8], eax
xor edi, edi
mov dword [esp + 0x48], edi
lea eax, [eax + esi*2]
add eax, 2
mov dword [edx], eax
lea eax, [eax + esi*2]
mov esi, dword [esp + 0x24]
mov dword [ecx + 0x1c], eax
mov eax, dword [esp + 0x5c]
mov word [ecx + 0x34], ax
movzx eax, si
mov word [ecx + 0x32], ax
mov eax, dword [esp + 0x30]
mov dword [eax + 0x20], ecx
mov eax, dword [esp + 0x44]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x54]
mov dword [ecx], str.auto_index
mov esi, dword [eax + 0x18]
mov dword [esp + 0x40], esi
cmp esi, dword [esp + 0x50]
jae 0x506c74
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x48], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x18], eax
nop word [eax + eax]
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x60], edx
cmp eax, dword [ecx + 0x2c]
jne 0x506c50
movzx ecx, word [esi + 0xc]
test cl, 0x82
je 0x506c4d
mov eax, dword [ebp + 8]
test byte [eax + 0x24], 8
je 0x506b2a
mov eax, dword [esi]
test byte [eax + 4], 1
jne 0x506b2a
test cl, cl
js 0x506c4d
mov ecx, dword [ebp + 0xc]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x506c4d
mov edx, dword [esi + 0x18]
test edx, edx
js 0x506c49
mov eax, dword [ebp + 8]
add edx, edx
mov ecx, dword [esi]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dl, byte [eax + edx*8 + 8]
call fcn.004afe40
test eax, eax
je 0x506c49
mov eax, dword [esi + 0x18]
xor edx, edx
movzx ecx, ax
mov dword [esp + 0x68], ecx
cmp eax, 0x40
jl 0x506b7f
mov esi, SysReAllocString
jmp 0x506b92
xor esi, esi
bts edx, eax
cmp eax, 0x20
cmovae esi, edx
xor edx, esi
cmp eax, 0x40
cmovae esi, edx
mov eax, dword [esp + 0x5c]
mov ecx, edx
and ecx, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x38], eax
mov eax, esi
and eax, dword [esp + 0x4c]
or ecx, eax
jne 0x506c45
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
or dword [esp + 0x48], edx
mov edx, dword [esp + 0x68]
mov eax, dword [eax + 4]
mov ecx, dword [ecx]
or dword [esp + 0x4c], esi
mov word [eax + edi*2], dx
test dword [ecx + 4], 0x200
je 0x506be4
mov esi, dword [ecx + 0xc]
mov edx, dword [ecx + 0x10]
jmp 0x506bea
mov esi, dword [ecx + 0x10]
mov edx, dword [ecx + 0xc]
test dword [edx + 4], 0x100
jne 0x506c0d
test esi, esi
je 0x506c00
test dword [esi + 4], 0x100
jne 0x506c0b
mov ecx, ebx
call fcn.004afc90
test eax, eax
jne 0x506c18
mov edx, esi
mov ecx, ebx
call fcn.004afc90
test eax, eax
je 0x506c1c
mov ecx, dword [eax]
jmp 0x506c21
mov ecx, 0x59a810
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x38], edx
mov eax, dword [eax + 0x20]
mov dword [eax + edi*4], ecx
inc edi
mov eax, dword [esp + 0x5c]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x18], eax
jmp 0x506c54
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x18]
add esi, 0x30
mov dword [esp + 0x40], esi
cmp esi, dword [esp + 0x50]
jb 0x506af0
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x48], edi
mov dword [esp + 0x60], eax
xor esi, esi
cmp dword [esp + 0x18], esi
jle 0x506ccd
mov ebx, dword [esp + 0x60]
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x34]
and ecx, dword [esp + 0x20]
or edx, ecx
je 0x506cb8
mov eax, dword [ebx]
mov word [eax + edi*2], si
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x20]
mov dword [eax + edi*4], 0x59a810
inc edi
mov edx, dword [esp + 0x38]
inc esi
mov ebx, edx
cmp esi, dword [esp + 0x18]
jl 0x506c80
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x48], edi
mov eax, dword [ebp + 8]
cmp dword [eax + 0x3c], 0
jg 0x506d15
jl 0x506cde
cmp dword [eax + 0x38], 0
jae 0x506d15
mov esi, dword [esp + 0x44]
mov eax, 0x3f
cmp ax, word [esi + 0x22]
jge 0x506d15
mov ebx, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [edx]
mov word [eax + edi*2], cx
inc ecx
mov eax, dword [ebx + 0x20]
mov dword [eax + edi*4], 0x59a810
inc edi
movsx eax, word [esi + 0x22]
cmp ecx, eax
jl 0x506cf3
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x48], edi
mov eax, dword [edx]
or ecx, 0xffffffff
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
inc edx
mov word [eax + edi*2], cx
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebp + 0x14]
mov eax, dword [eax + 0x20]
mov dword [eax + edi*4], 0x59a810
mov eax, dword [ebx + 0x28]
mov dword [ecx + 8], eax
inc dword [ebx + 0x28]
mov eax, dword [ecx + 8]
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x68], eax
cmp dword [esi + 0x78], ecx
jg 0x506d68
push 0
push edx
push eax
mov edx, 0x73
mov ecx, esi
call fcn.00499040
add esp, 0xc
lea edi, [esi + 0x70]
jmp 0x506d9d
mov ebx, dword [esp + 0x68]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea edi, [esi + 0x70]
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x73
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 8]
mov ecx, ebx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
call fcn.004cbc40
mov dword [esp + 0x60], eax
test eax, eax
je 0x506dec
mov edx, dword [esp + 0x68]
mov ecx, dword [edx]
cmp byte [ecx + 0x57], 0
je 0x506dd6
push eax
mov edx, 0xfffffff7
call fcn.00499b50
add esp, 4
lea edi, [esi + 0x70]
jmp 0x506dec
mov eax, dword [edx + 0x74]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x70]
mov edx, dword [esp + 0x60]
mov byte [eax + ecx*4 - 0x13], 0xf7
mov dword [eax + ecx*4 - 4], edx
mov eax, dword [ebx]
test dword [eax + 0x50], 0x80000
jne 0x506e56
mov ecx, dword [ebp + 0x14]
inc dword [ebx + 0x2c]
mov edx, dword [ebx + 0x2c]
mov dword [ecx + 0x34], edx
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x506e24
push 0
push edx
push 0x2710
mov edx, 0x4c
mov ecx, esi
call fcn.00499040
add esp, 0xc
jmp 0x506e56
mov ebx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x4c
mov dword [eax + ecx*4 + 4], 0x2710
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebp + 0x14]
movzx eax, byte [edx + 0x38]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x54]
mov eax, dword [eax]
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 0x30], 0x10
lea eax, [eax + ecx*8]
mov dword [esp + 0x44], eax
je 0x506f77
mov ecx, dword [esi + 0x74]
mov edx, dword [eax + 0x24]
mov dword [esp + 0x60], edx
mov dword [esp + 0x58], ecx
cmp dword [esi + 0x78], ecx
jg 0x506ead
push 0
push 0
push 0
mov edx, 0x47
mov ecx, esi
call fcn.00499040
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov dword [esp + 0x58], eax
jmp 0x506ee3
mov ebx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x47
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x74]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x68], eax
cmp dword [esi + 0x78], ecx
jg 0x506f0f
push eax
push 0
push edx
mov edx, 0xd
mov ecx, esi
call fcn.00499040
mov edx, dword [esp + 0x6c]
add esp, 0xc
jmp 0x506f41
mov ebx, dword [esp + 0x68]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 0xc], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xd
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x1c]
mov esi, dword [esi + 0x74]
cmp dword [ecx + 0x78], esi
jg 0x506f63
push 0
push 0
push edx
mov edx, 0xe
call fcn.00499040
add esp, 0xc
mov esi, eax
jmp 0x506fce
lea eax, [esi + 1]
mov dword [ecx + 0x74], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0xe
jmp 0x506fae
mov ecx, dword [esp + 0x1c]
mov esi, dword [esi + 0x74]
mov edx, dword [edx + 4]
cmp dword [ecx + 0x78], esi
jg 0x506f9c
push 0
push 0
push edx
mov edx, 0x26
call fcn.00499040
add esp, 0xc
mov esi, eax
jmp 0x506fce
lea eax, [esi + 1]
mov dword [ecx + 0x74], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x26
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4 + 0x10], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 4], edx
mov eax, dword [esp + 0x28]
test eax, eax
je 0x506ff8
dec dword [ebx + 0x38]
mov ecx, dword [ebx + 0x38]
push 0x10
push ecx
push eax
push ebx
mov dword [esp + 0x4c], ecx
call fcn.004b8f30
mov eax, dword [esp + 0x40]
add esp, 0x10
or dword [eax + 0x2c], 0x20000
mov al, byte [ebx + 0x13]
test al, al
jne 0x507007
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x507016
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x2c]
push 0
push 0
push 0
push 0
push eax
push dword [ecx + 4]
mov ecx, ebx
mov dword [esp + 0x58], eax
call fcn.004ce690
mov dword [esp + 0x6c], eax
add esp, 0x18
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x68], eax
test eax, eax
je 0x5070d1
mov edx, dword [esp + 0x30]
movzx ecx, word [edx + 0x18]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0x74]
cmp dword [ecx + 0x78], edx
jg 0x50707d
push dword [esp + 0x54]
mov edx, 0xb2
push 0
push eax
call fcn.00499040
add esp, 0xc
mov edx, eax
jmp 0x5070b3
mov ebx, dword [esp + 0x68]
lea eax, [edx + 1]
mov dword [ecx + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x54]
mov dword [eax + ecx*4 + 0xc], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
cmp byte [eax + 0x57], 0
jne 0x5070d1
mov eax, dword [edi]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x60]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x14]
mov ecx, dword [edx + 0x74]
mov eax, dword [eax + 8]
mov dword [esp + 0x68], eax
cmp dword [edx + 0x78], ecx
jg 0x507105
mov ecx, dword [esp + 0x1c]
mov edx, 0x89
push 0
push dword [esp + 0x44]
push eax
call fcn.00499040
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x50713b
mov ebx, dword [esp + 0x68]
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x40]
mov dword [eax + ecx*4 + 8], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x89
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edx + 0x74]
test ecx, ecx
jle 0x507158
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
mov ebx, 0x10
mov word [eax + ecx*4 - 0x12], bx
mov ecx, dword [edx + 0x74]
mov ebx, dword [esp + 0x14]
cmp dword [esp + 0x28], 0
je 0x5071a0
mov eax, dword [edx + 0xc]
mov ebx, dword [edx + 0xc]
not dword [esp + 0x3c]
mov dword [esp + 0x68], eax
mov eax, dword [eax + 0x3c]
add eax, dword [ebx + 0x38]
mov ebx, dword [esp + 0x14]
jns 0x50718f
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x6c]
call fcn.00499860
mov edx, dword [esp + 0x20]
add esp, 4
jmp 0x5071a0
mov eax, dword [edx + 0xc]
mov ebx, dword [esp + 0x3c]
mov eax, dword [eax + 0x40]
mov dword [eax + ebx*4], ecx
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x44]
test byte [eax + 0x30], 0x10
je 0x50726a
mov ecx, dword [esp + 0x58]
test ecx, ecx
jns 0x5071ba
mov ecx, dword [edx + 0x74]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x5071c9
mov ecx, 0x5d5a30
jmp 0x5071d1
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x48]
mov edx, esi
add eax, dword [esp + 0x54]
mov dword [ecx + 8], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [esp + 0x44]
push dword [ecx + 8]
push dword [eax + 0x28]
push dword [ecx + 4]
mov ecx, ebx
call fcn.005063b0
mov edx, dword [esp + 0x28]
add esp, 0xc
mov ecx, dword [edx + 0x74]
cmp dword [edx + 0x78], ecx
jg 0x50722b
mov ecx, dword [esp + 0x1c]
mov edx, 0xb
push 0
push esi
push 0
call fcn.00499040
mov eax, dword [esp + 0x50]
add esp, 0xc
mov edx, dword [esp + 0x1c]
and dword [eax + 0x30], 0xffffffef
jmp 0x5072ec
mov ebx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x44]
and dword [eax + 0x30], 0xffffffef
jmp 0x5072ec
mov ecx, dword [ebp + 0x14]
lea eax, [esi + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x60], ecx
mov ecx, dword [edx + 0x74]
cmp dword [edx + 0x78], ecx
jg 0x50729d
mov ecx, dword [esp + 0x1c]
mov edx, 5
push 0
push eax
push dword [esp + 0x68]
call fcn.00499040
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x5072d2
mov ebx, dword [esp + 0x60]
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 4], ebx
lea ebx, [esi + 1]
mov dword [eax + ecx*4 + 8], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 5
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edx + 0x74]
test eax, eax
jle 0x5072ec
lea ecx, [eax + eax*4]
mov ebx, 3
mov eax, dword [edi]
mov word [eax + ecx*4 - 0x12], bx
mov ebx, dword [esp + 0x14]
mov eax, dword [edx + 0x74]
mov dword [esp + 0x68], eax
test esi, esi
jns 0x5072fa
lea esi, [eax - 1]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x507309
mov eax, 0x5d5a30
jmp 0x507311
mov eax, dword [edi]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x68]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x507334
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x507334
movzx eax, al
mov dword [ebx + eax*4 + 0x98], ecx
inc byte [ebx + 0x13]
mov ecx, dword [esp + 0x64]
mov esi, dword [edx + 0x74]
test ecx, ecx
jns 0x507342
lea ecx, [esi - 1]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x507351
mov eax, 0x5d5a30
jmp 0x507359
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x28]
test eax, eax
je 0x50736d
mov ecx, dword [ebx]
mov edx, eax
call fcn.004b1450
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret