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

Disassembly:
sub esp, 0xa8
push ebx
push ebp
mov ebp, dword [esp + 0xb4]
push esi
mov esi, dword [esp + 0xc8]
push edi
mov edi, dword [esp + 0xc4]
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x5c], 0
lea eax, [edi + 0x50]
mov dword [esp + 0x74], eax
mov eax, dword [ebp]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x50]
mov dword [esp + 0x28], eax
movzx eax, byte [esi + 0x3c]
lea ecx, [eax + eax*8]
mov eax, dword [edi + 4]
lea eax, [eax + ecx*8]
add eax, 8
mov dword [esp + 0x64], eax
mov eax, dword [eax + 0x2c]
push eax
mov dword [esp + 0x28], eax
lea eax, [edi + 0x1f0]
push eax
call fcn.005861e0
not eax
not edx
and eax, dword [esp + 0xd8]
add esp, 8
and edx, dword [esp + 0xd4]
mov dword [esi + 0x58], eax
mov dword [esi + 0x5c], edx
mov esi, dword [esp + 0xc8]
mov ecx, esi
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
call fcn.005a7200
mov edi, dword [ebp + 0x38]
and eax, 1
mov ecx, dword [esp + 0xcc]
dec edi
mov edx, dword [esp + 0x64]
mov dword [ebp + 0x38], edi
mov dword [esp + 0x38], eax
mov dword [ecx + 0x10], edi
mov dword [ecx + 0xc], edi
mov eax, dword [ebp + 0x38]
dec eax
mov dword [esp + 0x58], edi
mov dword [ebp + 0x38], eax
cmp byte [ecx + 0x3c], 0
mov dword [esp + 0x78], eax
mov dword [ecx + 0x18], eax
jbe 0x582732
test byte [edx + 0x24], 8
je 0x582732
mov eax, dword [ebp + 0x2c]
inc eax
push eax
push 0
push 0x47
mov dword [ebp + 0x2c], eax
push ebx
mov dword [ecx], eax
call fcn.00570400
mov edx, dword [esp + 0x74]
add esp, 0x10
mov ebp, dword [esp + 0xc4]
mov ecx, esi
test esi, esi
jle 0x582763
lea eax, [esi + esi*2]
shl eax, 5
add eax, 0x330
add eax, ebp
nop dword [eax]
cmp dword [eax - 0x38], 0
jne 0x582763
cmp dword [eax], 0
jne 0x582763
dec ecx
sub eax, 0x60
test ecx, ecx
jg 0x582750
lea eax, [ecx + ecx*2]
shl eax, 5
test byte [edx + 0x28], 0x20
mov ebp, dword [eax + ebp + 0x304]
je 0x582832
mov ecx, dword [ebx + 0x6c]
mov esi, dword [edx + 0x1c]
mov edx, dword [edx + 0x18]
cmp dword [ebx + 0x70], ecx
jg 0x582799
push edx
push 0
push esi
push 0xb
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x5827c4
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], edx
jg 0x5827f2
push 0
push edi
push esi
push 0xc
push ebx
call fcn.0050f290
mov edx, eax
add esp, 0x14
mov eax, dword [esp + 0xcc]
mov dword [eax + 0x44], edx
mov edx, eax
mov byte [edx + 0x3d], 9
jmp 0x582e0d
lea eax, [edx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0xc
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0xcc]
mov dword [eax + 0x44], edx
mov edx, eax
mov byte [edx + 0x3d], 9
jmp 0x582e0d
mov edi, dword [esp + 0x28]
mov edx, dword [edi + 0x2c]
test edx, 0x400
je 0x582d3b
movzx eax, word [edi + 0x30]
mov dword [esp + 0x30], eax
add eax, 2
push eax
push dword [esp + 0xc0]
call fcn.005523a0
mov edx, dword [esp + 0xd4]
mov esi, eax
xor ebp, ebp
mov dword [esp + 0x58], esi
add esp, 8
mov eax, dword [edx + 0xc]
mov dword [esp + 0x18], eax
cmp dword [esp + 0x30], ebp
jbe 0x58297a
mov eax, dword [edi + 0x38]
mov ecx, dword [eax + ebp*4]
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x58296f
test byte [ecx + 0xc], 1
je 0x582922
cmp ebp, 0x1f
ja 0x5828b0
mov ecx, ebp
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x2c]
jmp 0x5828b2
xor eax, eax
test dword [edi + 0x28], eax
je 0x5828f6
mov edx, dword [esp + 0xbc]
mov edi, dword [edx + 0x28]
inc dword [edx + 0x2c]
mov esi, dword [edx + 0x2c]
push edi
lea eax, [edi + 1]
mov dword [edx + 0x28], eax
push dword [ecx]
push edx
call fcn.00538510
push esi
mov esi, dword [esp + 0x60]
lea eax, [esi + 2]
add eax, ebp
push eax
push edi
push 0xaf
push ebx
call fcn.00570460
mov edi, dword [esp + 0x48]
add esp, 0x20
jmp 0x582968
lea eax, [ebp + 2]
add eax, esi
push eax
push dword [esp + 0x3c]
push ebp
push edx
push ecx
push dword [esp + 0xd0]
call fcn.004e26f0
mov edx, dword [esp + 0xe4]
add esp, 0x18
mov eax, dword [edx + 0x10]
mov dword [esp + 0x18], eax
jmp 0x58296f
push 1
lea eax, [ebp + 2]
add eax, esi
push eax
mov eax, dword [ecx]
push dword [eax + 0x10]
push dword [esp + 0xc8]
call fcn.004e2d40
mov eax, dword [esp + 0x3c]
add esp, 0x10
cmp byte [eax + 0xf], 0x4a
jne 0x582968
test byte [edi + 0x1c], 2
je 0x582968
mov eax, dword [esp + 0xc4]
mov eax, dword [eax + 0x10]
push dword [eax + 0xc]
push 0
push 0x47
push ebx
call fcn.00570400
add esp, 0x10
mov edx, dword [esp + 0xcc]
inc ebp
cmp ebp, dword [esp + 0x30]
jl 0x582880
mov ecx, dword [ebx + 0x6c]
mov edx, dword [edi + 0x18]
cmp dword [ebx + 0x70], ecx
jg 0x582996
push 0
push esi
push edx
push 0x47
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x5829c1
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x47
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebx + 0x6c]
lea edx, [esi + 1]
cmp dword [ebx + 0x70], ecx
jg 0x5829e0
push 0
push edx
push dword [esp + 0x38]
push 0x47
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x582a0f
mov esi, dword [esp + 0x30]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x47
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
test byte [edi + 0x1c], 1
mov esi, 0xffffffff
mov edx, dword [ebx + 0x6c]
mov eax, 0xfffffffa
mov edi, dword [edi + 0x24]
cmovne esi, eax
cmp dword [ebx + 0x70], edx
jg 0x582a49
mov ebp, dword [esp + 0x50]
push ebp
mov ebp, dword [esp + 0x1c]
push ebp
mov ebp, dword [esp + 0x2c]
push ebp
push 6
push ebx
call fcn.0050f290
add esp, 0x14
mov edx, eax
jmp 0x582a80
mov ebp, dword [esp + 0x24]
lea eax, [edx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], ebp
mov ebp, dword [esp + 0x18]
mov dword [eax + ecx*4 + 8], ebp
mov ebp, dword [esp + 0x50]
mov dword [eax + ecx*4 + 0xc], ebp
mov ebp, dword [esp + 0x24]
mov dword [eax + ecx*4], 6
mov dword [eax + ecx*4 + 0x10], 0
push esi
push edi
push edx
push ebx
call fcn.00570940
mov edx, dword [esp + 0x38]
add esp, 0x10
mov eax, dword [esp + 0x54]
and dword [edx + 0x1c], 0xfffffffe
cmp byte [eax + 0x57], 0
je 0x582aa5
mov dword [edx + 0x24], 0
mov esi, dword [esp + 0xcc]
mov eax, 0x3f
mov edi, dword [esp + 0xc4]
mov ecx, 0xbb
mov dword [esi + 0x40], ebp
cmp byte [edi + 0x2e], 0
cmovne eax, ecx
xor ebp, ebp
mov byte [esi + 0x3d], al
mov eax, dword [ebx + 0x6c]
mov dword [esi + 0x44], eax
cmp dword [esp + 0x30], ebp
jbe 0x5842d5
mov eax, dword [esp + 0x50]
add eax, 2
mov dword [esp + 0x40], eax
nop word [eax + eax]
mov eax, dword [edx + 0x38]
mov edi, dword [eax + ebp*4]
mov dword [esp + 0x18], edi
cmp ebp, 0x10
jae 0x582b1c
mov ax, word [edx + 0x22]
mov cx, bp
shr ax, cl
test al, 1
je 0x582b1c
push edi
push esi
call fcn.004e7f60
add esp, 8
jmp 0x582d20
test byte [edi + 0xc], 1
je 0x582d24
cmp ebp, 0x1f
ja 0x582b36
mov eax, 1
mov ecx, ebp
shl eax, cl
jmp 0x582b38
xor eax, eax
test dword [edx + 0x28], eax
jne 0x582d24
mov eax, dword [esp + 0x54]
cmp byte [eax + 0x57], 0
jne 0x582d24
mov ecx, dword [esp + 0xcc]
xor esi, esi
cmp dword [ecx + 0x48], esi
jle 0x582c15
mov eax, dword [ebx]
xor edi, edi
mov dh, byte [eax + 0x57]
test dh, dh
je 0x582b73
mov ecx, 0x63d108
jmp 0x582b83
mov eax, dword [ecx + 0x4c]
mov eax, dword [edi + eax + 4]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea ecx, [eax + ecx*4]
mov dl, byte [ecx]
cmp dl, 0x5e
jne 0x582b95
mov eax, dword [esp + 0x40]
add eax, ebp
cmp dword [ecx + 0xc], eax
jmp 0x582ba3
cmp dl, 0x87
jne 0x582ba5
mov eax, dword [esp + 0x40]
add eax, ebp
cmp dword [ecx + 8], eax
je 0x582bb7
mov ecx, dword [esp + 0xcc]
inc esi
add edi, 0x14
cmp esi, dword [ecx + 0x48]
jl 0x582b68
jmp 0x582c11
mov eax, dword [ecx + 4]
mov esi, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
mov ecx, dword [ebx + 0x6c]
mov dword [esp + 0x20], eax
cmp dword [ebx + 0x70], ecx
jg 0x582bde
push esi
push edi
push eax
movzx eax, dl
push eax
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x582c11
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov byte [eax + ecx*4], dl
xor edx, edx
mov word [eax + ecx*4 + 2], dx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0xbc]
push 0
push 0x34
push dword [eax]
call fcn.0053c1d0
mov esi, eax
add esp, 0xc
test esi, esi
je 0x582c71
push 0x34
push 0
push esi
call fcn.00423ff0
mov ecx, dword [esp + 0xc8]
or eax, 0xffffffff
mov byte [esi], 0x35
add esp, 0xc
mov word [esi + 0x22], ax
mov dword [esi + 0x18], 1
mov eax, dword [ecx]
mov eax, dword [eax + 0x84]
cmp eax, 1
jge 0x582c71
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.0053e8f0
add esp, 0xc
mov eax, dword [esp + 0x54]
cmp byte [eax + 0x57], 0
jne 0x582d0b
mov eax, dword [edi]
mov ecx, dword [edi + 0x1c]
mov edx, dword [eax + 0xc]
test ecx, ecx
jle 0x582c95
mov eax, dword [edx + 0x14]
lea ecx, [ecx + ecx*4]
mov edx, dword [eax + ecx*4 - 0xc]
mov eax, dword [esp + 0x54]
push 0
push 0x35
push eax
mov dword [esi + 0xc], edx
call fcn.0053c1d0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x582cfd
push 0x34
push 0
push edi
call fcn.00423ff0
or eax, 0xffffffff
mov byte [edi], 0xb0
mov word [edi + 0x22], ax
lea eax, [edi + 0x34]
mov dword [edi + 8], eax
mov byte [eax], 0
mov eax, dword [esp + 0x4c]
mov dword [edi + 0x18], 1
add eax, ebp
mov dword [esi + 0x10], edi
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0xd8]
push 0x10
push dword [eax + 0x18]
push esi
push dword [esp + 0xd4]
call fcn.00542df0
add esp, 0x1c
jmp 0x582d00
mov dword [esi + 0x10], edi
mov eax, dword [esp + 0x54]
mov dword [esi + 0xc], 0
test esi, esi
je 0x582d19
push esi
push eax
call fcn.00542b00
add esp, 8
mov esi, dword [esp + 0xcc]
mov edx, dword [esp + 0x28]
inc ebp
cmp ebp, dword [esp + 0x30]
jl 0x582af0
mov edx, dword [esp + 0xcc]
jmp 0x582e0d
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x582e78
mov eax, dword [edi + 0x38]
mov ebp, dword [esp + 0xbc]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0xcc]
mov eax, dword [eax]
inc dword [ebp + 0x2c]
mov esi, dword [ebp + 0x2c]
push esi
push ecx
push 0
push edx
push eax
push ebp
call fcn.004e26f0
mov edi, eax
add esp, 0x18
cmp edi, esi
je 0x582d9a
test esi, esi
je 0x582d9a
mov al, byte [ebp + 0x13]
cmp al, 8
jae 0x582d9a
movzx eax, al
mov dword [ebp + eax*4 + 0xa4], esi
inc byte [ebp + 0x13]
mov eax, dword [esp + 0xcc]
cmp dword [eax + 0x34], 0
mov esi, dword [eax + 0x10]
je 0x582df0
push esi
push edi
push 0xd
push ebx
call fcn.00570400
mov eax, dword [esp + 0xdc]
push 1
push edi
push esi
push dword [eax + 0x34]
push 0x40
push ebx
call fcn.00570590
push dword [esp + 0xfc]
push dword [esp + 0xfc]
push esi
push dword [esp + 0xfc]
push dword [esp + 0xfc]
push ebp
call fcn.004ed3e0
add esp, 0x40
mov ebp, dword [esp + 0x24]
push edi
push esi
push ebp
push 0x1e
push ebx
call fcn.00570460
mov edx, dword [esp + 0xe0]
add esp, 0x14
mov byte [edx + 0x3d], 0xbb
mov edi, dword [esp + 0xc4]
mov eax, dword [esp + 0x5c]
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x5c]
xor ecx, ecx
mov esi, dword [edi + 0x68]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], eax
test eax, eax
jle 0x584529
nop dword [eax + eax]
movzx eax, word [esi + 0xa]
xor ebp, ebp
mov edi, eax
test al, 6
jne 0x584504
mov ecx, dword [edx + 0x58]
mov eax, dword [esi + 0x2c]
and ecx, dword [esi + 0x28]
and eax, dword [edx + 0x5c]
or ecx, eax
je 0x5842dc
mov edi, dword [esp + 0xc4]
mov ecx, dword [esp + 0x10]
or dword [edi + 0x30], 2
jmp 0x58450b
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x5830bb
xor edi, edi
mov dword [esp + 0x18], 0xbb
xor esi, esi
mov dword [esp + 0x40], 0
test dl, 0x20
je 0x582eb1
mov eax, dword [esp + 0x28]
lea ecx, [edi + 4]
mov eax, dword [eax + 0x38]
mov esi, dword [eax]
jmp 0x582eb3
xor ecx, ecx
test dl, 0x10
je 0x582ec2
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x38]
mov edi, dword [ecx + eax]
mov eax, dword [esp + 0x38]
test eax, eax
je 0x582ed4
mov eax, esi
mov esi, edi
mov edi, eax
mov eax, dword [esp + 0x38]
test esi, esi
je 0x582f9c
mov ebp, dword [esi]
mov dword [esp + 0x3c], 0x17151618
mov edx, dword [ebp + 0x10]
push edx
call fcn.005439f0
add esp, 4
test eax, eax
je 0x582f29
mov edx, dword [esp + 0xbc]
push edx
call fcn.00552400
mov esi, eax
push 1
push esi
push dword [ebp + 0x10]
mov dword [esp + 0x3c], esi
push edx
call fcn.004e2d40
movzx ecx, byte [ebp]
add esp, 0x14
inc ecx
and ecx, 2
or ecx, 1
mov al, byte [esp + ecx + 0x3c]
jmp 0x582f5b
lea eax, [esp + 0x20]
push eax
push edx
push dword [esp + 0xc4]
call fcn.00542180
push esi
push dword [esp + 0xdc]
mov dword [esp + 0x40], eax
call fcn.004e7f60
movzx ecx, byte [ebp]
add esp, 0x14
mov esi, dword [esp + 0x20]
mov al, byte [esp + ecx + 6]
push dword [esp + 0x2c]
movzx eax, al
push dword [esp + 0x5c]
push dword [esp + 0x2c]
push eax
push ebx
call fcn.00570460
add esp, 0x14
test esi, esi
je 0x582f93
mov ecx, dword [esp + 0xbc]
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x582f93
movzx eax, al
mov dword [ecx + eax*4 + 0xa4], esi
inc byte [ecx + 0x13]
mov esi, dword [esp + 0x38]
xor esi, 1
jmp 0x582fb7
mov esi, eax
xor esi, 1
push ebp
push dword [esp + 0x28]
lea eax, [esi*4 + 0x20]
push eax
push ebx
call fcn.00570400
add esp, 0x10
test edi, edi
je 0x58302f
mov ecx, dword [esp + 0xbc]
mov ebp, dword [edi]
push 1
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
push eax
push dword [ebp + 0x10]
mov dword [esp + 0x4c], eax
push ecx
call fcn.004e2d40
push dword [ebp + 0x10]
call fcn.005439f0
add esp, 0x14
test eax, eax
jne 0x583001
mov al, byte [ebp]
cmp al, 0x38
je 0x582ff4
cmp al, 0x36
jne 0x583001
lea edx, [esi*2 + 0x37]
mov dword [esp + 0x18], edx
jmp 0x583010
mov eax, dword [esp + 0x38]
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x18], eax
push dword [ebp + 0x10]
call fcn.005439f0
add esp, 4
test eax, eax
jne 0x58302f
push edi
push dword [esp + 0xd0]
call fcn.004e7f60
add esp, 8
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0xcc]
mov ecx, dword [ebx + 0x6c]
sete al
mov edi, dword [esp + 0x18]
add al, 0x26
mov ebp, dword [esp + 0x24]
mov byte [edx + 0x3d], al
mov dword [edx + 0x40], ebp
mov dword [edx + 0x44], ecx
cmp edi, 0xbb
je 0x582e0d
mov eax, dword [esp + 0xbc]
inc dword [eax + 0x2c]
mov esi, dword [eax + 0x2c]
push esi
push ebp
push 0x87
push ebx
call fcn.00570400
push esi
push dword [esp + 0x6c]
push dword [esp + 0x58]
push edi
push ebx
call fcn.00570460
mov eax, dword [ebx + 0x6c]
add esp, 0x24
mov edi, dword [esp + 0xc4]
test eax, eax
jle 0x584279
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [ebx + 0x68]
mov word [eax + ecx*4 - 0x12], dx
mov edx, dword [esp + 0xcc]
jmp 0x582e14
test edx, 0x200
je 0x5839e8
movzx ecx, word [edi + 0x18]
xor esi, esi
movzx edi, word [edi + 0x1a]
mov eax, edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
movzx ebp, word [eax + 0x1c]
mov eax, ebp
mov dword [esp + 0x68], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov byte [esp + 0x17], al
mov byte [esp + 0x63], al
mov dword [esp + 0x4c], eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xcc]
mov eax, dword [eax + 8]
mov dword [esp + 0x10], eax
movzx eax, cx
mov dword [esp + 0x34], eax
mov ecx, eax
test dl, 0x20
je 0x583147
mov eax, dword [esp + 0x28]
mov esi, edi
mov eax, dword [eax + 0x38]
mov eax, dword [eax + ecx*4]
inc ecx
mov dword [esp + 0x44], eax
test dl, 0x10
je 0x583204
mov eax, dword [esp + 0x28]
mov edi, ebp
cmp esi, edi
mov ebp, edx
cmova edi, esi
mov eax, dword [eax + 0x38]
mov eax, dword [eax + ecx*4]
mov ecx, 0x100
mov dword [esp + 0x48], eax
test word [eax + 0xa], cx
je 0x5831c3
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp + 0xcc]
mov eax, dword [ecx + 0x2c]
inc eax
push eax
push 1
push 0x47
mov dword [ecx + 0x2c], eax
push ebx
mov dword [esi + 0x2c], eax
call fcn.00570400
mov eax, dword [ebx + 0x6c]
xor ecx, ecx
shl dword [esi + 0x2c], 1
add esp, 0x10
mov edx, dword [esp + 0x34]
mov dword [esi + 0x30], eax
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
mov eax, dword [esp + 0x28]
sete cl
xor ecx, dword [esp + 0x38]
or dword [esi + 0x2c], ecx
mov ebp, dword [eax + 0x2c]
cmp dword [esp + 0x44], 0
mov edx, ebp
mov esi, edi
jne 0x583204
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x34]
mov eax, dword [edx + 4]
movsx ecx, word [eax + ecx*2]
test ecx, ecx
js 0x5831f2
mov eax, dword [edx + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
je 0x5831fb
jmp 0x583200
mov edx, ebp
mov esi, edi
cmp ecx, 0xfffffffe
jne 0x583204
mov byte [esp + 0x17], 1
mov esi, edi
mov edx, ebp
test dl, 0x30
jne 0x583253
test edx, 0x80000
je 0x583253
mov edi, dword [esp + 0xbc]
mov esi, 1
mov ebp, dword [esp + 0xcc]
mov byte [esp + 0x17], 1
inc dword [edi + 0x2c]
cmp dword [ebp], 0
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x4c], eax
mov dword [ebp + 0x24], eax
je 0x58324a
push eax
push 0
push 0x47
push ebx
call fcn.00570400
add esp, 0x10
dec dword [edi + 0x38]
mov eax, dword [edi + 0x38]
mov dword [ebp + 0x28], eax
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
cmp ax, word [ecx + 0x34]
jae 0x5832ab
mov eax, dword [ecx + 0x1c]
xor ecx, ecx
cmp byte [edi + eax], cl
sete cl
cmp dword [esp + 0x38], ecx
jne 0x5832ab
mov al, byte [esp + 0x17]
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x68]
mov byte [esp + 0x63], al
mov eax, dword [esp + 0x58]
mov dword [esp + 0x48], ecx
movzx ecx, dx
movzx eax, al
mov dword [esp + 0x44], ebp
mov byte [esp + 0x17], 0
mov dword [esp + 0x58], ecx
mov dword [esp + 0x68], eax
jmp 0x5832af
mov ebp, dword [esp + 0x44]
cmp dword [esp + 0xc8], 0
jle 0x5832d8
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x100000
je 0x5832d8
push dword [esp + 0x10]
push 0x88
push ebx
call fcn.005703a0
add esp, 0xc
lea eax, [esp + 0x40]
push eax
push esi
push dword [esp + 0x40]
mov esi, dword [esp + 0xd8]
push esi
push dword [esp + 0xcc]
call fcn.004e1af0
mov ecx, eax
add esp, 0x14
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], ecx
test eax, eax
je 0x583368
cmp word [esp + 0x68], 0
je 0x583368
add edi, eax
jne 0x58331b
xor eax, eax
mov dword [esp + 0x3c], eax
jmp 0x583368
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x583320
mov eax, dword [esp + 0x54]
sub ecx, edx
push 0
lea esi, [ecx + 1]
push esi
test eax, eax
je 0x583342
push eax
call fcn.0053c1d0
add esp, 0xc
jmp 0x58334a
call fcn.00557720
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
je 0x58335d
push esi
push edi
push eax
call fcn.00427770
add esp, 0xc
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0xcc]
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x583375
mov eax, dword [esi + 0x28]
jmp 0x583378
mov eax, dword [esi + 0x10]
mov dword [esp + 0x30], eax
test ebp, ebp
je 0x58338e
test byte [ebp + 0xc], 0x28
mov dword [esp + 0x50], 0
je 0x583396
mov dword [esp + 0x50], 1
mov eax, dword [esp + 0x48]
test eax, eax
je 0x5833ac
test byte [eax + 0xc], 0x28
mov dword [esp + 0x18], 0
je 0x5833b4
mov dword [esp + 0x18], 1
test ebp, ebp
jne 0x5833ff
cmp word [esp + 0x20], bp
ja 0x5833ff
mov edi, dword [esp + 0x34]
xor eax, eax
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x17]
test al, al
je 0x5834cd
mov dword [esp + 0x50], 0
lea eax, [edi + ecx]
push eax
push 0
push 0x4b
push ebx
call fcn.00570400
mov al, byte [esp + 0x27]
lea esi, [edi + 1]
add esp, 0x10
mov ebp, 1
jmp 0x5834db
mov edi, dword [esp + 0x34]
mov esi, edi
mov dword [esp + 0x20], 1
test ebp, ebp
je 0x5833c9
mov eax, dword [ebp]
mov edi, dword [eax + 0x10]
mov eax, dword [esp + 0x58]
movzx ebp, ax
mov eax, esi
push ebp
add eax, ecx
push eax
push edi
push dword [esp + 0xc8]
call fcn.004e2d40
push dword [esp + 0x54]
push dword [esp + 0xe0]
push ebx
call fcn.00597f70
mov eax, dword [esp + 0x60]
add esp, 0x1c
test byte [eax + 0xa], 0x80
jne 0x583472
push edi
call fcn.0053f8e0
add esp, 4
test eax, eax
je 0x583472
push dword [esp + 0x30]
mov eax, esi
add eax, dword [esp + 0x20]
push eax
push 0x32
push ebx
call fcn.00570400
add esp, 0x10
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x583489
mov eax, esi
add eax, ecx
push eax
push ebp
push edi
call fcn.0058dae0
add esp, 0xc
push edi
add esi, ebp
call fcn.005439f0
add esp, 4
test eax, eax
jne 0x5834b8
push dword [esp + 0x44]
push dword [esp + 0xd0]
call fcn.004e7f60
mov edi, dword [esp + 0x3c]
add esp, 8
xor al, al
mov ebp, 1
jmp 0x5834db
mov edi, dword [esp + 0x34]
xor al, al
mov dword [esp + 0x50], 1
mov ebp, 1
jmp 0x5834db
mov esi, edi
test edx, edx
jne 0x5833dd
mov ebp, dword [esp + 0x20]
push dword [esp + 0x40]
movzx ecx, al
mov eax, esi
sub eax, ecx
mov dword [esp + 0x24], ecx
push eax
push dword [esp + 0x24]
push dword [esp + 0xc8]
call fcn.004e1f80
mov eax, dword [esp + 0x38]
add esp, 0x10
movzx eax, word [eax + 0x32]
test ax, ax
je 0x583513
cmp esi, eax
je 0x583658
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x583529
push eax
push 1
push 0x47
push ebx
call fcn.00570400
add esp, 0x10
mov eax, dword [esp + 0xcc]
mov eax, dword [eax + 0x34]
test eax, eax
je 0x583576
push edi
push dword [esp + 0x20]
mov edi, dword [esp + 0x38]
push edi
push eax
push 0x40
push ebx
call fcn.00570590
push dword [esp + 0xec]
push dword [esp + 0xec]
push edi
push dword [esp + 0xec]
push dword [esp + 0xec]
push dword [esp + 0xe8]
call fcn.004ed3e0
add esp, 0x30
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x38]
lea eax, [eax + ebp*2]
movzx edi, byte [ecx + eax*2 + 0x608fc8]
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x100000
je 0x5835f6
cmp edi, 0x17
jne 0x5835f6
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 8]
movsx ecx, word [eax]
mov eax, 0x66666667
add ecx, 9
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push 0x7c
push ebx
call fcn.005703a0
add esp, 0xc
mov ebp, eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0x2c], ebp
jne 0x5835d9
cmp dword [esp + 0x48], 0
je 0x5835f6
push 1
push ebx
call fcn.005709c0
mov eax, dword [ebx + 0x6c]
inc eax
push eax
push ebp
push ebx
call fcn.005708e0
add esp, 0x14
xor eax, eax
mov dword [esp + 0x2c], eax
mov ebp, dword [esp + 0x30]
push esi
push dword [esp + 0x20]
push ebp
push dword [esp + 0x1c]
push edi
push ebx
call fcn.00570590
add esp, 0x18
cmp dword [esp + 0x4c], 0
je 0x583658
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push 0
push 9
push ebx
call fcn.00570400
mov ecx, dword [esp + 0x48]
mov eax, esi
sub eax, dword [esp + 0x60]
push eax
push dword [esp + 0x30]
mov eax, 1
cmp eax, esi
push ebp
push dword [esp + 0x2c]
sbb eax, eax
and eax, 4
movzx eax, byte [eax + ecx + 0x608fca]
push eax
push ebx
call fcn.00570590
add esp, 0x28
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x34]
mov esi, edi
test eax, eax
je 0x5837c6
mov eax, dword [eax]
mov edi, dword [eax + 0x10]
mov eax, dword [esp + 0x68]
movzx ebp, ax
mov eax, esi
add eax, dword [esp + 0x1c]
push ebp
push eax
push edi
push dword [esp + 0xc8]
call fcn.004e2d40
push dword [esp + 0x58]
push dword [esp + 0xe0]
push ebx
call fcn.00597f70
mov eax, dword [esp + 0x64]
add esp, 0x1c
test byte [eax + 0xa], 0x80
jne 0x5836cc
push edi
call fcn.0053f8e0
add esp, 4
test eax, eax
je 0x5836cc
push dword [esp + 0x30]
mov eax, esi
add eax, dword [esp + 0x20]
push eax
push 0x32
push ebx
call fcn.00570400
add esp, 0x10
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x5836f8
push eax
push ebp
push edi
call fcn.0058dae0
mov eax, dword [esp + 0x48]
push eax
mov eax, esi
add eax, dword [esp + 0x2c]
push ebp
push eax
push dword [esp + 0xd4]
call fcn.004e1f80
add esp, 0x1c
push edi
add esi, ebp
call fcn.005439f0
add esp, 4
test eax, eax
jne 0x5837b9
push dword [esp + 0x48]
push dword [esp + 0xd0]
call fcn.004e7f60
add esp, 8
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x58373c
push eax
mov eax, dword [esp + 0x58]
push eax
call fcn.0053c330
add esp, 8
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x583751
push eax
push dword [esp + 0x58]
call fcn.0053c330
add esp, 8
mov edx, dword [esp + 0xcc]
mov eax, dword [ebx + 0x6c]
mov dword [edx + 0x44], eax
test esi, esi
je 0x5837f6
test ebp, ebp
je 0x58377d
mov eax, dword [ebx + 0x6c]
add eax, 3
push eax
push ebp
push 0x11
push ebx
call fcn.00570400
add esp, 0x10
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
push esi
push dword [esp + 0x20]
movzx eax, byte [eax + ecx*2 + 0x608b8c]
push ebp
push dword [esp + 0x1c]
push eax
push ebx
call fcn.00570590
mov eax, dword [esp + 0x44]
add esp, 0x18
test eax, eax
je 0x5837fa
push eax
push ebx
call fcn.0057b170
add esp, 8
jmp 0x5837fa
mov dword [esp + 0x18], 1
jmp 0x58371e
cmp byte [esp + 0x63], 0
je 0x583722
mov ebp, dword [esp + 0x4c]
test ebp, ebp
jne 0x5837f0
mov eax, dword [esp + 0x1c]
add eax, edi
push eax
push ebp
push 0x4b
push ebx
call fcn.00570400
add esp, 0x10
mov dword [esp + 0x18], ebp
inc esi
jmp 0x583726
mov ebp, dword [esp + 0x30]
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x58383c
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push edx
push 0x10
push ebx
call fcn.00570400
mov ecx, dword [esp + 0x30]
lea eax, [ecx + esi]
push eax
push dword [esp + 0x30]
mov eax, dword [esp + 0x50]
push ebp
mov ebp, dword [esp + 0x2c]
push ebp
movzx eax, byte [ecx + eax*2 + 0x608b8c]
push eax
push ebx
call fcn.00570590
add esp, 0x28
jmp 0x583840
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x40000
je 0x58385b
push edi
push edi
push ebp
push 0x7d
push ebx
call fcn.00570460
add esp, 0x14
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0xc4]
test byte [edi + 0x2c], 0x40
je 0x5838c2
mov eax, 0x1020
test word [ecx + 0x28], ax
jne 0x5838c2
mov esi, 1
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0xcc]
cmp dword [edx], 0
jne 0x5838ac
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x5838ac
push dword [esp + 0x74]
push ebp
push eax
call fcn.005976d0
mov edx, dword [esp + 0xd8]
add esp, 0xc
test dword [edi + 0x2c], 0x1000
je 0x5839a6
mov byte [edx + 0x3d], 0xbb
jmp 0x5839b3
mov edx, dword [esp + 0x5c]
mov eax, dword [edx + 0xc]
test byte [eax + 0x1c], 0x80
jne 0x5838e3
push ebp
mov ebp, dword [esp + 0x28]
push ebp
push edx
push ecx
call fcn.004e22d0
add esp, 0x10
xor esi, esi
jmp 0x583880
xor esi, esi
cmp dword [esp + 0x24], ebp
je 0x58387c
push eax
call fcn.00561de0
mov ebp, eax
movzx ecx, word [ebp + 0x32]
push ecx
push dword [esp + 0xc4]
call fcn.005523a0
movzx ecx, word [ebp + 0x32]
add esp, 0xc
mov dword [esp + 0x20], eax
xor edi, edi
xor eax, eax
mov edx, ecx
cmp ax, cx
jae 0x583979
mov dword [esp + 0x2c], eax
nop
mov eax, dword [esp + 0x5c]
xor ecx, ecx
movzx edx, word [eax + 0x34]
test edx, edx
je 0x58394d
mov eax, dword [ebp + 4]
movzx esi, word [eax + edi*2]
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 4]
nop dword [eax]
cmp si, word [eax]
je 0x5839a1
inc ecx
add eax, 2
cmp ecx, edx
jl 0x583940
or ecx, 0xffffffff
mov eax, dword [esp + 0x20]
add eax, edi
push eax
movsx eax, cx
push eax
push dword [esp + 0x18]
push 0x5e
push ebx
call fcn.00570460
movzx ecx, word [ebp + 0x32]
inc edi
add esp, 0x14
cmp edi, ecx
jl 0x583920
mov esi, dword [esp + 0x2c]
mov edx, ecx
mov ebp, dword [esp + 0x24]
movzx eax, dx
push eax
push dword [esp + 0x24]
push dword [esp + 0x80]
push ebp
push 0x1c
push ebx
call fcn.00570590
mov edi, dword [esp + 0x40]
add esp, 0x18
jmp 0x583880
movzx ecx, cx
jmp 0x583950
cmp dword [esp + 0x38], 0
sete al
add al, 0x26
mov byte [edx + 0x3d], al
mov eax, dword [esp + 0x10]
mov dword [edx + 0x40], eax
mov al, byte [edi + 0x2e]
and al, 1
mov byte [edx + 0x3e], al
test byte [edi + 0x2c], 0xf
jne 0x5839cc
mov byte [edx + 0x3f], 1
mov edi, dword [esp + 0xc4]
test esi, esi
je 0x582e14
mov dword [esp + 0x5c], 0
jmp 0x582e14
test edx, 0x2000
je 0x584285
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x68], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x18], 0
mov eax, dword [edx + 0x28]
dec dword [edx + 0x38]
mov ebp, dword [edx + 0x2c]
mov dword [esp + 0x20], eax
inc ebp
inc eax
mov dword [edx + 0x2c], ebp
mov dword [edx + 0x28], eax
mov eax, dword [edx + 0x38]
mov dword [esp + 0x58], eax
xor eax, eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x38], 0
mov ecx, dword [eax + 0x10]
mov eax, dword [edi + 0x38]
mov dword [esp + 0x44], ecx
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov eax, dword [eax + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xcc]
mov dword [eax + 0x40], ebp
mov ebp, dword [esp + 0xc4]
mov byte [eax + 0x3d], 0x43
mov al, byte [ebp + 0x2c]
cmp al, 1
jbe 0x583b98
movzx eax, al
sub eax, esi
dec eax
mov dword [esp + 0x40], eax
push 0
lea eax, [eax + eax*8]
lea eax, [eax*8 + 0x50]
push eax
push dword [esp + 0x5c]
call fcn.0053c1d0
mov ebp, eax
add esp, 0xc
mov dword [esp + 0x48], ebp
test ebp, ebp
jne 0x583ac2
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa8
ret
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0xc4]
lea eax, [edx + 1]
movzx eax, al
mov dword [ebp + 4], eax
mov dword [ebp], eax
mov eax, dword [esp + 0x64]
movups xmm0, xmmword [eax]
movups xmmword [ebp + 8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ebp + 0x18], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ebp + 0x28], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ebp + 0x38], xmm0
movq xmm0, qword [eax + 0x40]
movq qword [ebp + 0x48], xmm0
mov edi, dword [ecx + 4]
cmp edx, 1
jl 0x583b60
mov esi, dword [esp + 0xcc]
lea ecx, [ebp + 0x50]
add esi, 0x9c
nop
movzx eax, byte [esi]
lea esi, [esi + 0x60]
lea ecx, [ecx + 0x48]
lea eax, [eax + eax*8]
movups xmm0, xmmword [edi + eax*8 + 8]
movups xmmword [ecx - 0x48], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x18]
movups xmmword [ecx - 0x38], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x28]
movups xmmword [ecx - 0x28], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x38]
movups xmmword [ecx - 0x18], xmm0
movq xmm0, qword [edi + eax*8 + 0x48]
movq qword [ecx - 8], xmm0
sub edx, 1
jne 0x583b20
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0xc4]
test byte [eax + 0x28], 0x10
jne 0x583be5
test byte [ecx + 0x1c], 0x80
jne 0x583ba1
inc dword [edx + 0x2c]
mov eax, dword [edx + 0x2c]
push eax
push 0
push 0x4b
push ebx
mov dword [esp + 0x60], eax
call fcn.00570400
add esp, 0x10
jmp 0x583bd4
mov ebp, dword [ebp + 4]
mov dword [esp + 0x48], ebp
jmp 0x583b6b
push ecx
call fcn.00561de0
mov edi, dword [edx + 0x28]
mov esi, eax
mov dword [esp + 0x54], edi
lea ecx, [edi + 1]
mov dword [edx + 0x28], ecx
movzx ecx, word [esi + 0x32]
push ecx
push edi
push 0x76
push ebx
call fcn.00570400
push esi
push dword [esp + 0xd4]
call fcn.0057df60
add esp, 0x1c
mov eax, dword [esp + 0xbc]
inc dword [eax + 0x2c]
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x18], eax
push dword [esp + 0x2c]
push 0
push 0x47
push ebx
call fcn.00570400
mov dword [esp + 0x7c], eax
add esp, 0x10
mov eax, dword [esp + 0xc4]
cmp dword [eax + 0x5c], 1
jle 0x583cae
mov edx, dword [esp + 0x34]
xor edi, edi
xor esi, esi
xor ebp, ebp
mov eax, dword [eax + 0x68]
add eax, esi
mov ecx, dword [eax]
cmp eax, edx
je 0x583c6d
mov ebx, 0x8006
test word [eax + 0xa], bx
mov ebx, dword [esp + 0xbc]
jne 0x583c6d
mov ebp, 0x3fff
test word [eax + 0xc], bp
mov ebp, dword [esp + 0x4c]
je 0x583c6d
test dword [ecx + 4], 0x400000
jne 0x583c6d
push 0
push 0
push ecx
push dword [esp + 0x60]
call fcn.004eb740
push eax
push ebp
push ebx
call fcn.0053f370
mov edx, dword [esp + 0x50]
mov ebp, eax
add esp, 0x1c
mov dword [esp + 0x4c], ebp
mov eax, dword [esp + 0xc4]
inc edi
add esi, 0x30
cmp edi, dword [eax + 0x5c]
jl 0x583c15
mov ebx, dword [esp + 0xc0]
test ebp, ebp
mov ebp, dword [esp + 0x48]
mov esi, dword [esp + 0xbc]
je 0x583cb5
mov eax, dword [esp + 0x4c]
push eax
push 0
push 0x1002c
push esi
call fcn.00559230
add esp, 0x10
mov dword [esp + 0x4c], eax
jmp 0x583cb5
mov esi, dword [esp + 0xbc]
push str.MULTI_INDEX_OR
push 1
push esi
call fcn.0057a3e0
mov edx, dword [esp + 0x1c]
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x1c], ecx
cmp dword [edx + 0xc], ecx
jle 0x583d6a
mov edi, dword [esp + 0x24]
jmp 0x583ce4
mov ebp, dword [esp + 0x48]
lea eax, [ecx + ecx*2]
shl eax, 4
add eax, dword [edx + 0x18]
cmp dword [eax + 0x14], edi
je 0x583d04
mov ebx, 0x400
test word [eax + 0xc], bx
mov ebx, dword [esp + 0xc0]
je 0x583d5c
mov eax, dword [eax]
xor edi, edi
mov dword [esp + 0x3c], edi
test eax, eax
je 0x583d2b
push edi
push edi
push eax
push dword [esp + 0x60]
call fcn.004eb740
mov ecx, dword [esp + 0x2c]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov esi, eax
jmp 0x583d2d
xor esi, esi
mov eax, dword [esp + 0x54]
mov dword [esp + 0x7c], esi
cmp byte [eax + 0x57], 0
je 0x583d7f
test esi, esi
je 0x583d51
push esi
push eax
call fcn.00542b00
mov ecx, dword [esp + 0x24]
add esp, 8
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xbc]
mov edi, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, dword [edx + 0xc]
jl 0x583ce0
mov ecx, dword [esi + 0xe8]
test ecx, ecx
jne 0x5840a1
xor eax, eax
jmp 0x5840bf
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x583d8c
mov dword [eax + 0xc], esi
mov esi, eax
lea eax, [ecx + 1]
push eax
push str.INDEX__d
push 1
push dword [esp + 0xc8]
call fcn.0057a3e0
push dword [esp + 0x30]
push 0x20
push 0
push 0
push 0
push esi
mov esi, dword [esp + 0xe4]
push ebp
push esi
call fcn.00581670
mov ebp, eax
add esp, 0x30
mov dword [esp + 0x30], ebp
test ebp, ebp
je 0x58407f
push 0
lea ecx, [ebp + 0x2f8]
push ecx
push dword [esp + 0x50]
push esi
call fcn.00585bc0
mov eax, dword [esp + 0xd4]
add esp, 0x10
mov esi, dword [esp + 0x1c]
test byte [eax + 0x28], 0x10
jne 0x583f60
mov eax, dword [esp + 0x10]
mov ebp, esi
mov eax, dword [eax + 0xc]
dec eax
cmp esi, eax
mov eax, 0xffffffff
cmove ebp, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], ebp
test byte [eax + 0x1c], 0x80
jne 0x583e48
mov edi, dword [esp + 0x18]
push edi
push 0xffffffffffffffff
push dword [esp + 0x2c]
push eax
push ebx
call fcn.00540000
push ebp
push edi
push 0
push dword [esp + 0x70]
push 0x2f
push ebx
call fcn.00570590
add esp, 0x2c
mov edi, eax
jmp 0x583f5c
mov esi, dword [eax + 8]
test esi, esi
je 0x583e60
nop
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x583e60
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x583e50
movzx ebp, word [esi + 0x32]
push ebp
push dword [esp + 0xc0]
call fcn.005523a0
add esp, 8
mov dword [esp + 0x40], eax
xor edi, edi
test ebp, ebp
je 0x583ea6
nop
lea ecx, [edi + eax]
mov eax, dword [esi + 4]
push ecx
movsx eax, word [eax + edi*2]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x50]
push ebx
call fcn.00540000
mov eax, dword [esp + 0x54]
inc edi
add esp, 0x14
cmp edi, ebp
jl 0x583e80
mov edi, dword [esp + 0x28]
test edi, edi
je 0x583ec9
push ebp
push eax
push 0
push dword [esp + 0x5c]
push 0x1d
push ebx
call fcn.00570590
add esp, 0x18
mov dword [esp + 0x3c], eax
test edi, edi
js 0x583f10
push dword [esp + 0x18]
mov esi, dword [esp + 0x44]
push ebp
push esi
push 0x61
push ebx
call fcn.00570460
push ebp
push esi
push dword [esp + 0x34]
push dword [esp + 0x70]
push 0x8a
push ebx
call fcn.00570590
add esp, 0x2c
test edi, edi
je 0x583f14
mov eax, dword [ebx + 0x6c]
test eax, eax
jle 0x583f14
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [ebx + 0x68]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x583f14
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
cmp ebp, 1
jne 0x583f46
mov ebp, dword [esp + 0x30]
test esi, esi
je 0x583f40
mov edx, dword [esp + 0xbc]
mov al, byte [edx + 0x13]
cmp al, 8
jae 0x583f40
movzx eax, al
mov dword [edx + eax*4 + 0xa4], esi
inc byte [edx + 0x13]
mov esi, dword [esp + 0x1c]
jmp 0x583f60
mov edx, dword [esp + 0xbc]
cmp ebp, dword [edx + 0x1c]
jle 0x583f58
mov dword [edx + 0x1c], ebp
mov dword [edx + 0x20], esi
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x30]
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x583f7f
push 0
push dword [esp + 0x5c]
push dword [esp + 0x34]
push 0xa
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x583fb2
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4], 0xa
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
test edi, edi
je 0x583fd4
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x57], 0
je 0x583fc8
mov eax, 0x63d108
jmp 0x583fd1
mov eax, dword [ebx + 0x68]
lea ecx, [edi + edi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [ebp + 0x30]
mov ecx, 1
mov eax, dword [esp + 0x38]
test dl, 2
cmovne eax, ecx
mov ecx, dword [ebp + 0x348]
mov dword [esp + 0x38], eax
test dword [ecx + 0x2c], 0x200
je 0x584025
test esi, esi
je 0x584006
mov eax, dword [esp + 0x68]
cmp dword [ecx + 0x20], eax
jne 0x584025
mov eax, dword [esp + 0x44]
test byte [eax + 0x1c], 0x80
je 0x58401c
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x584025
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x68], eax
jmp 0x58402d
mov dword [esp + 0x68], 0
test dl, 1
je 0x58403d
mov eax, dword [esp + 0xc4]
or dword [eax + 0x30], 1
push ebp
call fcn.00584b90
mov esi, dword [esp + 0xc0]
add esp, 4
mov ecx, dword [esi + 0xe8]
test ecx, ecx
jne 0x58405b
xor eax, eax
jmp 0x584079
mov edx, dword [esi + 8]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x58406d
mov eax, 0x63d108
jmp 0x584076
mov eax, dword [edx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xe8], eax
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x584094
push eax
push dword [esp + 0x58]
call fcn.00542b00
add esp, 8
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
jmp 0x583d58
mov edx, dword [esi + 8]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x5840b3
mov eax, 0x63d108
jmp 0x5840bc
mov eax, dword [edx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xe8], eax
mov esi, dword [esp + 0xcc]
mov eax, dword [esp + 0x68]
mov dword [esi + 0x48], eax
test eax, eax
je 0x5840de
mov eax, dword [esp + 0x20]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x54]
test eax, eax
je 0x5840fb
push eax
push ebp
mov dword [eax + 0xc], 0
call fcn.00542b00
add esp, 8
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x57], 0
je 0x58410d
mov eax, 0x63d108
jmp 0x58411a
mov eax, dword [esp + 0x6c]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov ecx, dword [ebx + 0x6c]
mov edx, dword [esi + 0xc]
cmp dword [ebx + 0x70], ecx
jg 0x58413a
push 0
push edx
push 0
push 9
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x584169
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 9
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebx + 0xc]
mov edx, dword [esp + 0x58]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x584187
push edx
push ebx
push ecx
call fcn.00529000
add esp, 0xc
jmp 0x584190
mov ecx, dword [ecx + 0x40]
mov eax, dword [ebx + 0x6c]
mov dword [ecx + edx*4], eax
mov edi, dword [esp + 0xc4]
mov edx, esi
mov eax, dword [ebx + 0x6c]
mov dword [edx + 0x44], eax
cmp byte [edi + 0x2c], 1
jbe 0x584261
mov esi, dword [esp + 0x48]
test ebp, ebp
je 0x584201
cmp esi, dword [ebp + 0x164]
jae 0x5841ec
cmp esi, dword [ebp + 0x15c]
jb 0x5841d4
mov eax, dword [ebp + 0x158]
mov dword [esi], eax
mov dword [ebp + 0x158], esi
jmp 0x584261
cmp esi, dword [ebp + 0x160]
jb 0x5841ec
mov eax, dword [ebp + 0x150]
mov dword [esi], eax
mov dword [ebp + 0x150], esi
jmp 0x584261
cmp dword [ebp + 0x210], 0
je 0x584201
push esi
push ebp
call fcn.0051a400
add esp, 8
jmp 0x58425a
test esi, esi
je 0x584261
cmp dword [0x635d20], 0
je 0x584250
mov eax, dword [0x63cf30]
test eax, eax
je 0x584221
push eax
call dword [0x635d70]
add esp, 4
push esi
call dword [0x635d4c]
sub dword [0x63ced0], eax
dec dword [0x63cef4]
push esi
call dword [0x635d44]
mov eax, dword [0x63cf30]
add esp, 8
test eax, eax
je 0x58425a
push eax
call dword [0x635d78]
jmp 0x584257
push esi
call dword [0x635d44]
add esp, 4
mov edx, dword [esp + 0xcc]
cmp dword [esp + 0x38], 0
jne 0x582e14
push dword [esp + 0x34]
push edx
call fcn.004e7f60
add esp, 8
mov edx, dword [esp + 0xcc]
jmp 0x582e14
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0xcc]
test byte [eax + 0x28], 0x40
jne 0x582e09
mov ecx, dword [esp + 0x38]
push ebp
mov al, byte [ecx + 0x60901c]
mov byte [edx + 0x3d], al
mov eax, dword [esp + 0x28]
push eax
mov dword [edx + 0x40], eax
movzx eax, byte [ecx + 0x60906c]
push eax
push ebx
call fcn.00570400
mov edx, dword [esp + 0xdc]
add esp, 0x10
inc eax
mov dword [edx + 0x44], eax
mov byte [edx + 0x3f], 1
jmp 0x582e0d
mov edx, esi
jmp 0x582e14
mov eax, dword [esp + 0x64]
mov edx, dword [esi]
mov dword [esp + 0x20], edx
mov cl, byte [eax + 0x24]
mov eax, edi
test cl, 0x58
je 0x584393
mov eax, dword [edx + 4]
test al, 3
je 0x584500
test cl, 8
je 0x58430c
test al, 1
je 0x584500
mov ecx, dword [esp + 0xc4]
mov edx, dword [edx + 0x24]
cmp dword [ecx + 0x1f8], edx
jne 0x584327
mov ecx, 1
xor edx, edx
jmp 0x58435d
mov edi, dword [ecx + 0x1f4]
mov eax, 1
cmp edi, eax
jle 0x58434c
add ecx, 0x1fc
nop dword [eax]
cmp dword [ecx], edx
je 0x58437c
inc eax
add ecx, 4
cmp eax, edi
jl 0x584340
xorps xmm0, xmm0
movlpd qword [esp + 0x6c], xmm0
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
mov edi, dword [esp + 0xcc]
and ecx, dword [edi + 0x58]
and edx, dword [edi + 0x5c]
or ecx, edx
jne 0x584500
movzx eax, word [esi + 0xa]
mov edx, dword [esp + 0x20]
jmp 0x58439a
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x58435d
mov edi, dword [esp + 0xcc]
movzx ecx, ax
mov eax, dword [esp + 0x58]
cmp eax, 1
jne 0x584420
mov eax, dword [edi + 4]
xorps xmm0, xmm0
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x7c], eax
lea eax, [esp + 0x7c]
mov dword [esp + 0x9c], eax
mov eax, ecx
mov dword [esp + 0x84], ebp
movlpd qword [esp + 0x8c], xmm0
movlpd qword [esp + 0x94], xmm0
mov dword [esp + 0x88], 0x4ebb20
test edx, edx
je 0x584405
push edx
lea eax, [esp + 0x88]
push eax
call fcn.00581150
movzx eax, word [esi + 0xa]
add esp, 8
movzx eax, ax
cmp word [esp + 0x98], bp
je 0x584429
mov ecx, 2
mov dword [esp + 0x10], ecx
jmp 0x584504
mov edx, ecx
cmp eax, 3
jge 0x584456
mov eax, ecx
movzx eax, ax
mov edx, eax
test eax, 0x1000
je 0x584456
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0xc4]
test ecx, ecx
jne 0x58450b
mov ecx, 3
mov dword [esp + 0x10], ecx
jmp 0x58450b
test edx, 0x200
je 0x5844ba
mov edx, dword [edi + 0x2c]
test edx, edx
je 0x5844ba
mov ebp, dword [ebx + 0x6c]
mov edi, edx
and edx, 1
shr edi, 1
or edx, 0x10
cmp dword [ebx + 0x70], ebp
jg 0x58448a
push 0
push 0
push edi
push edx
push ebx
call fcn.0050f290
add esp, 0x14
mov ebp, eax
jmp 0x5844ba
lea eax, [ebp + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ebp*4]
mov eax, dword [ebx + 0x68]
add ecx, ebp
mov byte [eax + ecx*4], dl
xor edx, edx
mov word [eax + ecx*4 + 2], dx
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], edx
mov byte [eax + ecx*4 + 1], dl
push 0x10
push dword [esp + 0x7c]
push dword [esp + 0x28]
push dword [esp + 0xc8]
call fcn.00542df0
add esp, 0x10
test ebp, ebp
je 0x5844fb
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x57], 0
je 0x5844e9
mov eax, 0x63d108
jmp 0x5844f8
mov eax, dword [ebx + 0x68]
lea ecx, [ebp*4]
add ecx, ebp
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
or word [esi + 0xa], 4
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0xc4]
mov eax, dword [esp + 0x2c]
add esi, 0x30
mov edx, dword [esp + 0xcc]
dec eax
mov dword [esp + 0x2c], eax
test eax, eax
jg 0x582e40
mov esi, dword [edi + 0x68]
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x58], ecx
test ecx, ecx
jg 0x582e23
mov ebp, dword [edi + 0x64]
test ebp, ebp
jle 0x584661
mov ebx, dword [esp + 0xbc]
lea edi, [esi + 0xc]
mov edx, 0xb
test byte [edi - 2], 6
jne 0x584647
movzx eax, word [edi]
test al, 0x82
setne cl
bt ax, dx
setb al
test al, cl
je 0x584647
mov ecx, dword [esp + 0x24]
cmp dword [edi + 8], ecx
jne 0x584647
mov eax, dword [esp + 0x64]
test byte [eax + 0x24], 0x58
jne 0x584647
mov eax, dword [edi - 0xc]
push 0
push 0x83
push dword [esp + 0xdc]
mov dword [esp + 0x78], eax
push dword [esp + 0xdc]
push dword [edi + 0xc]
push ecx
push dword [esp + 0x8c]
call fcn.00586150
mov esi, eax
add esp, 0x1c
test esi, esi
je 0x584642
test byte [esi + 0xa], 4
jne 0x584642
test byte [esi + 0xc], 1
je 0x5845e9
mov eax, dword [esi]
test dword [eax + 4], 0x1000
je 0x5845e9
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x584642
mov eax, dword [esi]
push 0x10
push dword [esp + 0x7c]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x8c], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0x9c], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esp + 0xac], xmm0
mov eax, dword [eax + 0x30]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x98], eax
lea eax, [esp + 0x8c]
push eax
push ebx
call fcn.00542df0
add esp, 0x10
or word [esi + 0xa], 4
mov edx, 0xb
dec ebp
add edi, 0x30
test ebp, ebp
jg 0x584556
mov ebx, dword [esp + 0xc0]
mov edi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xcc]
mov eax, dword [ebp + 0x38]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x584a0f
movzx eax, byte [ebp + 0x3c]
lea ecx, [eax + eax*8]
mov eax, dword [edi + 4]
mov ecx, dword [eax + ecx*8 + 0x18]
mov dword [esp + 0x7c], ecx
test byte [ecx + 0x1c], 0x80
jne 0x58472d
mov edx, dword [esp + 0xbc]
mov ecx, dword [edx + 0x1c]
mov ebp, dword [edx + 0x20]
cmp ecx, 2
jl 0x5846b3
lea eax, [ebp + 2]
mov dword [edx + 0x20], eax
lea eax, [ecx - 2]
mov dword [edx + 0x1c], eax
jmp 0x5846bf
mov eax, dword [edx + 0x2c]
lea ebp, [eax + 1]
add eax, 2
mov dword [edx + 0x2c], eax
mov eax, dword [esp + 0xcc]
lea edx, [ebp + 1]
mov ecx, dword [ebx + 0x6c]
mov esi, dword [eax + 4]
cmp dword [ebx + 0x70], ecx
jg 0x5846f4
push 0
push edx
push esi
push 0x87
push ebx
call fcn.0050f290
mov edx, 1
add esp, 0x14
mov dword [esp + 0x10], edx
jmp 0x584817
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 8], edx
mov edx, 1
mov dword [eax + ecx*4], 0x87
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov dword [esp + 0x10], edx
jmp 0x584817
mov esi, dword [ecx + 8]
test esi, esi
je 0x584744
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x584744
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x584734
movzx edx, word [esi + 0x32]
mov dword [esp + 0x10], edx
lea edi, [edx + 1]
cmp edi, 1
jne 0x58477b
mov edi, dword [esp + 0xbc]
mov al, byte [edi + 0x13]
test al, al
jne 0x58476a
inc dword [edi + 0x2c]
mov ebp, dword [edi + 0x2c]
jmp 0x5847ce
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov ebp, dword [edi + eax*4 + 0xa4]
jmp 0x5847ce
mov eax, dword [esp + 0xbc]
mov ebp, dword [eax + 0x20]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x6c], eax
cmp edi, eax
jg 0x5847b5
mov ebx, dword [esp + 0xbc]
lea eax, [edi + ebp]
mov dword [ebx + 0x20], eax
mov eax, dword [esp + 0x6c]
sub eax, edi
mov edi, ebx
mov ebx, dword [esp + 0xc0]
mov dword [edi + 0x1c], eax
jmp 0x5847d2
mov eax, dword [esp + 0xbc]
mov eax, dword [eax + 0x2c]
lea ebp, [eax + 1]
add eax, edi
mov edi, dword [esp + 0xbc]
mov dword [edi + 0x2c], eax
mov dword [esp + 0x18], ebp
xor edi, edi
test edx, edx
je 0x584817
lea eax, [ebp + 1]
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x6c], eax
add eax, edi
push eax
mov eax, dword [esi + 4]
movsx eax, word [eax + edi*2]
push eax
push dword [esp + 0x2c]
push ecx
push ebx
call fcn.00540000
mov ecx, dword [esp + 0x90]
inc edi
mov eax, dword [esp + 0x80]
add esp, 0x14
cmp edi, ebp
jl 0x5847e3
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
lea esi, [ebp + 1]
mov edi, dword [ebx + 0x6c]
mov eax, dword [eax]
mov dword [esp + 0x6c], eax
cmp dword [ebx + 0x70], edi
jg 0x584844
push edx
push esi
push 0
push eax
push 0x1d
push ebx
call fcn.004d8850
mov edx, dword [esp + 0x28]
add esp, 0x18
mov edi, eax
jmp 0x584872
mov esi, dword [esp + 0x6c]
lea eax, [edi + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [edi + edi*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], esi
lea esi, [ebp + 1]
mov dword [eax + ecx*4], 0xfd1d
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], edx
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x58488e
push ebp
push edx
push esi
push 0x61
push ebx
call fcn.0050f290
mov edx, dword [esp + 0x24]
add esp, 0x14
jmp 0x5848b8
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
lea esi, [ebp + 1]
mov dword [eax + ecx*4], 0x61
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], ebp
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x6c]
mov eax, dword [eax]
mov dword [esp + 0x6c], eax
cmp dword [ebx + 0x70], ecx
jg 0x5848e2
push edx
push esi
push ebp
push eax
push 0x8a
push ebx
call fcn.004d8850
mov edx, dword [esp + 0x28]
add esp, 0x18
jmp 0x58490c
mov esi, dword [esp + 0x6c]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], esi
lea esi, [ebp + 1]
mov dword [eax + ecx*4], 0xfd8a
mov dword [eax + ecx*4 + 8], ebp
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], edx
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x6c]
mov eax, dword [eax + 4]
mov dword [esp + 0x6c], eax
cmp dword [ebx + 0x70], ecx
jg 0x584938
push edx
push esi
push 0
push eax
push 0xb7
push ebx
call fcn.004d8850
mov edx, dword [esp + 0x28]
add esp, 0x18
jmp 0x584967
mov edx, dword [esp + 0x6c]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*4], 0xfdb7
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], edx
mov eax, dword [ebx + 0x6c]
test eax, eax
jle 0x58497e
lea ecx, [eax + eax*4]
mov esi, 0x10
mov eax, dword [ebx + 0x68]
mov word [eax + ecx*4 - 0x12], si
mov eax, dword [ebx]
mov esi, dword [ebx + 0x6c]
cmp byte [eax + 0x57], 0
je 0x584990
mov eax, 0x63d108
jmp 0x584999
mov eax, dword [ebx + 0x68]
lea ecx, [edi + edi*4]
lea eax, [eax + ecx*4]
inc edx
mov dword [eax + 8], esi
cmp edx, 1
jne 0x5849c5
test ebp, ebp
je 0x584a0f
mov ecx, dword [esp + 0xbc]
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x584a18
movzx eax, al
mov dword [ecx + eax*4 + 0xa4], ebp
mov ebp, ecx
inc byte [ebp + 0x13]
jmp 0x5849d9
mov eax, dword [esp + 0xbc]
cmp edx, dword [eax + 0x1c]
jle 0x5849d7
mov dword [eax + 0x1c], edx
mov dword [eax + 0x20], ebp
mov ebp, eax
mov ecx, dword [esp + 0xcc]
mov edi, dword [ecx]
test edi, edi
je 0x584a72
mov eax, dword [ebx + 0x6c]
lea esi, [ebx + 0x6c]
mov dword [ecx + 0x1c], eax
mov ecx, dword [esi]
cmp dword [ebx + 0x70], ecx
jg 0x584a1c
push 0
push edi
push 1
push 0x47
push ebx
call fcn.0050f290
add esp, 0x14
lea edx, [ebx + 0x68]
jmp 0x584a53
mov ebp, dword [esp + 0xbc]
jmp 0x5849d9
mov ebp, ecx
jmp 0x5849d9
mov ebp, dword [esp + 0xbc]
lea eax, [ecx + 1]
mov dword [esi], eax
lea edx, [ebx + 0x68]
mov eax, dword [edx]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4], 0x47
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0xcc]
cmp dword [eax + 0x38], 0
je 0x584afb
mov edi, dword [eax + 0x38]
mov ebp, esi
mov dword [esp + 0x74], esi
lea eax, [ebx + 0x70]
jmp 0x584a8c
mov edi, dword [ecx + 0x38]
lea ebp, [ebx + 0x6c]
mov dword [esp + 0x74], ebp
lea eax, [ebx + 0x70]
lea edx, [ebx + 0x68]
mov esi, ebp
test edi, edi
je 0x584b5d
mov ecx, dword [edi + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx]
cmp dword [eax], ecx
jg 0x584ab3
mov edx, dword [esp + 0x20]
push 0
push edx
push 0
push 0x4a
push ebx
call fcn.0050f290
add esp, 0x14
jmp 0x584ae5
lea eax, [ecx + 1]
mov dword [ebp], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edx]
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x4a
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ebp, dword [esp + 0xbc]
mov eax, dword [esi]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0xcc]
inc byte [ebp + 0x1a]
mov ebx, dword [esp + 0xc4]
xor edi, edi
mov esi, dword [ebx + 0x68]
cmp dword [ebx + 0x64], edi
jle 0x584b5d
jmp 0x584b17
mov eax, dword [esp + 0xcc]
test byte [esi + 0xa], 6
jne 0x584b54
mov ecx, dword [esi + 0x28]
and ecx, dword [eax + 0x58]
mov edx, dword [esp + 0xcc]
mov eax, dword [esi + 0x2c]
and eax, dword [edx + 0x5c]
or ecx, eax
jne 0x584b54
mov eax, dword [esp + 0x64]
test byte [eax + 0x24], 0x40
jne 0x584b54
push 0x10
push dword [esp + 0x7c]
push dword [esi]
push ebp
call fcn.00542df0
add esp, 0x10
or word [esi + 0xa], 4
inc edi
add esi, 0x30
cmp edi, dword [ebx + 0x64]
jl 0x584b10
mov edx, dword [esp + 0xcc]
pop edi
pop esi
pop ebp
mov eax, dword [edx + 0x58]
mov edx, dword [edx + 0x5c]
pop ebx
add esp, 0xa8
ret