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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
mov eax, dword [0x65e374]
xor eax, esp
mov dword [esp + 0x94], eax
mov eax, ecx
mov byte [esp + 7], 0
mov ecx, dword [ebp + 0x14]
push esi
push edi
mov edi, dword [eax + 8]
mov esi, edx
mov edx, dword [ebp + 8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x50], ecx
xor ecx, ecx
mov eax, dword [edi + 0xc]
mov dword [esp + 0x60], ecx
mov ecx, dword [edi + 0x88]
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x5c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x48], edi
mov dword [esp + 0x6c], ecx
cmp dword [eax + 0x30], ecx
jg 0x521729
push 0
push 0
push 0
mov edx, 0x14
mov ecx, edi
call fcn.004d5d40
mov edx, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x6c], eax
jmp 0x52175f
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4], 0x14
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 [edx + 0x10]
xorps xmm0, xmm0
mov ecx, dword [esp + 0x50]
mov esi, dword [esi + 0x14]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [ecx + 0x40]
mov dword [esp + 0x30], 0
mov dword [esp + 0x4c], ecx
mov eax, dword [eax + 0xc]
movlpd qword [esp + 0x38], xmm0
lea eax, [eax + eax*2]
shl eax, 4
add eax, esi
mov dword [esp + 0x14], eax
cmp esi, eax
jae 0x52199a
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esi]
mov dword [esp + 0x28], ecx
mov eax, dword [eax]
or eax, dword [edi + 4]
jne 0x52185a
test byte [esi + 0xa], 2
jne 0x52185a
test byte [ecx + 4], 1
jne 0x52185a
mov dword [esp + 0x88], eax
xorps xmm0, xmm0
mov eax, dword [edx + 0x30]
mov edx, ecx
movaps xmmword [esp + 0x70], xmm0
lea ecx, [esp + 0x70]
movq qword [esp + 0x80], xmm0
mov byte [esp + 0x84], 3
mov dword [esp + 0x74], 0x4ec130
mov dword [esp + 0x78], 0x4ec220
mov dword [esp + 0x88], eax
call fcn.004e79a0
cmp byte [esp + 0x84], 0
je 0x521856
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
push 0
push 0
mov ecx, dword [ecx]
call fcn.004eb0b0
mov edx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
call fcn.004eab60
add esp, 0xc
mov dword [esp + 0x5c], eax
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0x14]
cmp eax, dword [edx + 0x30]
jne 0x521983
test byte [esi + 0xc], 0x82
je 0x521983
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x24]
and ecx, dword [ebp + 0xc]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x521983
mov ecx, dword [esi + 0x1c]
test ecx, ecx
js 0x521983
mov eax, dword [edx + 0x10]
add ecx, ecx
mov eax, dword [eax + 4]
mov dl, byte [eax + ecx*8 + 0xd]
mov ecx, dword [esi]
call fcn.004e9f40
test eax, eax
je 0x52197f
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x28], ecx
cmp ecx, 0x40
jl 0x5218c8
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], bind
jmp 0x5218eb
mov eax, ecx
xor edx, edx
xor ecx, ecx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x24], ecx
cmovae edx, ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x1c], edx
cmp byte [esp + 0xf], 0
jne 0x521917
mov edx, dword [esp + 0x34]
add ecx, ecx
mov eax, dword [edx + 4]
push dword [eax + ecx*8]
push dword [edx]
push str.automatic_index_on__s__s_
push 0x11c
call fcn.004ba090
add esp, 0x10
mov byte [esp + 0xf], 1
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
and ecx, dword [esp + 0x58]
and eax, dword [esp + 0x2c]
or ecx, eax
jne 0x52197f
mov eax, dword [esp + 0x30]
mov edx, edi
inc eax
mov dword [esp + 0x28], eax
push eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
call fcn.00522610
add esp, 4
test eax, eax
jne 0x5222d5
mov ecx, dword [esp + 0x30]
mov eax, edi
mov edx, dword [esp + 0x18]
mov eax, dword [eax + 0x30]
mov dword [eax + ecx*4], esi
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x58]
or eax, dword [esp + 0x24]
or ecx, dword [esp + 0x1c]
mov dword [esp + 0x58], eax
mov dword [esp + 0x2c], ecx
jmp 0x521987
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
add esi, 0x30
cmp esi, dword [esp + 0x14]
jb 0x5217b0
mov esi, dword [esp + 0x58]
jmp 0x5219a2
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x4c]
not ecx
mov eax, dword [esp + 0x30]
or ecx, 0x80000000
movzx eax, ax
not esi
mov word [edi + 0x28], ax
mov word [edi + 0x18], ax
mov eax, edi
mov dword [eax + 0x24], 0x4241
mov eax, dword [esp + 0x18]
mov edx, dword [edx + 0x40]
and esi, edx
mov dword [esp + 0x58], esi
mov esi, 0x3f
mov dword [esp + 0x64], edx
and ecx, dword [eax + 0x44]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], ecx
movzx ecx, word [eax + 0x2a]
mov dword [esp + 0x28], ecx
movzx eax, cx
cmp si, cx
jge 0x5219ff
mov dword [esp + 0x24], esi
jmp 0x521a0d
movsx esi, cx
mov dword [esp + 0x24], esi
xor esi, esi
cmp si, ax
jge 0x521a47
mov edi, dword [esp + 0x24]
xor esi, esi
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 + 0x58]
and ecx, dword [esp + 0x2c]
or edx, ecx
je 0x521a3a
inc dword [esp + 0x30]
inc esi
cmp esi, edi
jl 0x521a13
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x18]
cmp dword [eax + 0x44], 0
jg 0x521a67
jl 0x521a57
test edx, edx
jae 0x521a67
movsx eax, cx
mov ecx, dword [esp + 0x30]
add ecx, 0xffffffc1
add ecx, eax
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x38]
mov esi, dword [esp + 0x10]
push eax
push 0
lea edx, [edx + 1]
mov ecx, dword [esi]
call fcn.004f8e80
add esp, 8
mov dword [esp + 0x44], eax
test eax, eax
je 0x5222d9
mov ecx, dword [esp + 0x4c]
xor esi, esi
xorps xmm0, xmm0
mov dword [esp + 0x1c], esi
movlpd qword [esp + 0x38], xmm0
mov dword [ecx + 0x20], eax
mov ecx, dword [esp + 0x34]
mov dword [eax], str.auto_index
mov dword [eax + 0xc], ecx
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x14]
mov dword [esp + 0x54], edx
cmp edx, dword [esp + 0x14]
jae 0x521c0a
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
nop
mov eax, dword [edx + 0x14]
cmp eax, dword [ecx + 0x30]
jne 0x521bf5
test byte [edx + 0xc], 0x82
je 0x521bf5
mov ecx, dword [edx + 0x20]
mov eax, dword [edx + 0x24]
and ecx, dword [ebp + 0xc]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x521bf1
mov ecx, dword [edx + 0x1c]
test ecx, ecx
js 0x521bf1
mov eax, dword [esp + 0x18]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dl, byte [eax + ecx*8 + 0xd]
mov ecx, dword [esp + 0x54]
mov ecx, dword [ecx]
call fcn.004e9f40
test eax, eax
je 0x521bed
mov eax, dword [esp + 0x54]
xor edx, edx
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x38], eax
cmp eax, 0x40
jl 0x521b55
mov eax, bind
mov dword [esp + 0x64], eax
jmp 0x521b6e
bts edx, eax
xor ecx, ecx
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
mov dword [esp + 0x64], ecx
mov eax, ecx
and eax, dword [esp + 0x28]
mov ecx, edx
and ecx, dword [esp + 0x1c]
or ecx, eax
jne 0x521bed
mov eax, dword [esp + 0x54]
or dword [esp + 0x1c], edx
mov edx, dword [esp + 0x38]
mov ecx, dword [eax]
mov eax, dword [esp + 0x28]
or eax, dword [esp + 0x64]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 4]
mov word [eax + esi*2], dx
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x38], eax
test dword [edx + 4], 0x100
jne 0x521bd2
test eax, eax
je 0x521bc1
test dword [eax + 4], 0x100
je 0x521bc1
mov edx, eax
jmp 0x521bd2
mov ecx, dword [esp + 0x10]
call fcn.004e9df0
test eax, eax
jne 0x521be4
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
call fcn.004e9df0
mov ecx, 0x62a66c
test eax, eax
je 0x521be6
mov ecx, dword [eax]
mov eax, dword [edi + 0x20]
mov dword [eax + esi*4], ecx
inc esi
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x18]
add edx, 0x30
mov dword [esp + 0x54], edx
cmp edx, dword [esp + 0x14]
jb 0x521ae0
mov dword [esp + 0x1c], esi
xor esi, esi
cmp dword [esp + 0x24], esi
jle 0x521c5a
mov edi, dword [esp + 0x1c]
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 + 0x58]
and ecx, dword [esp + 0x2c]
or edx, ecx
je 0x521c4f
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 4]
mov word [eax + edi*2], si
mov eax, dword [ecx + 0x20]
mov dword [eax + edi*4], 0x62a66c
inc edi
inc esi
cmp esi, dword [esp + 0x24]
jl 0x521c16
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x18]
cmp dword [eax + 0x44], 0
jg 0x521ca2
jl 0x521c6c
cmp dword [eax + 0x40], 0
jae 0x521ca2
mov eax, dword [esp + 0x34]
mov ecx, 0x3f
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
cmp cx, word [eax + 0x2a]
jge 0x521caa
mov edi, eax
mov eax, dword [edx + 4]
mov word [eax + esi*2], cx
inc ecx
mov eax, dword [edx + 0x20]
mov dword [eax + esi*4], 0x62a66c
inc esi
movsx eax, word [edi + 0x2a]
cmp ecx, eax
jl 0x521c85
jmp 0x521caa
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x1c]
mov eax, dword [edx + 4]
or ecx, 0xffffffff
mov edi, dword [esp + 0x50]
mov word [eax + esi*2], cx
mov eax, dword [edx + 0x20]
mov ecx, dword [esp + 0x10]
mov dword [eax + esi*4], 0x62a66c
mov eax, dword [ecx + 0x28]
mov dword [edi + 8], eax
mov eax, edi
inc dword [ecx + 0x28]
mov edi, dword [esp + 0x48]
mov eax, dword [eax + 8]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x521d07
mov eax, dword [esp + 0x30]
mov edx, 0x6b
push 0
inc eax
mov ecx, edi
push eax
push dword [esp + 0x1c]
call fcn.004d5d40
add esp, 0xc
jmp 0x521d42
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x30]
inc edi
mov dword [eax + ecx*4], 0x6b
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x48]
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
mov eax, dword [ecx + 8]
mov dword [esp + 0x38], eax
call fcn.004fb160
mov dword [esp + 0x14], eax
test eax, eax
je 0x521d93
mov edx, dword [esp + 0x38]
mov ecx, dword [edx]
cmp byte [ecx + 0x45], 0
je 0x521d7a
push eax
mov edx, 0xfffffffb
call fcn.004d67f0
add esp, 4
jmp 0x521d93
mov eax, dword [edx + 0x88]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x58]
mov edx, dword [esp + 0x14]
mov byte [eax + ecx*4 - 0x13], 0xfb
mov dword [eax + ecx*4 - 4], edx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
inc dword [eax + 0x40]
movzx eax, byte [edx + 0x2c]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x20]
shl ecx, 4
mov eax, dword [eax]
mov eax, dword [eax + 4]
add eax, ecx
mov dword [esp + 0x24], eax
test byte [eax + 0x30], 0x10
je 0x521ee5
mov edx, dword [eax + 0x24]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
mov dword [esp + 0x20], edx
mov dword [esp + 0x60], ecx
cmp dword [eax + 0x30], ecx
jg 0x521df9
push 0
push 0
push 0
mov edx, 0x4d
mov ecx, edi
call fcn.004d5d40
mov edx, dword [esp + 0x2c]
add esp, 0xc
mov dword [esp + 0x60], eax
jmp 0x521e2f
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4], 0x4d
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 + 0x24]
mov ecx, dword [edi + 0x88]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x521e60
push dword [esp + 0x14]
mov ecx, edi
push 0
push edx
mov edx, 0xf
call fcn.004d5d40
add esp, 0xc
jmp 0x521e96
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov edi, dword [esp + 0x48]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xf
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 0x88]
mov dword [esp + 0x34], edx
cmp dword [eax + 0x30], edx
jg 0x521ec9
mov edx, dword [esp + 0x20]
mov ecx, edi
push 0
push 0
push edx
mov edx, 0x10
call fcn.004d5d40
add esp, 0xc
mov dword [esp + 0x34], eax
jmp 0x521f4e
lea eax, [edx + 1]
mov dword [edi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x58]
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x10
jmp 0x521f32
mov eax, dword [edi + 0xc]
mov ecx, dword [edx + 4]
mov edx, dword [edi + 0x88]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], edx
cmp dword [eax + 0x30], edx
jg 0x521f18
push 0
push 0
push ecx
mov edx, 0x3a
mov ecx, edi
call fcn.004d5d40
add esp, 0xc
mov dword [esp + 0x34], eax
jmp 0x521f4e
lea eax, [edx + 1]
mov dword [edi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x58]
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4], 0x3a
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
cmp dword [esp + 0x5c], 0
je 0x521fc4
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x38], ecx
mov edx, dword [ecx + 0x48]
mov dword [esp + 0x68], edx
lea eax, [edx + 1]
mov dword [ecx + 0x48], eax
lea eax, [edx - 1]
test edx, eax
jne 0x521f92
lea eax, [edx*8 + 4]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ecx]
push 0
push eax
call fcn.004b81f0
mov ecx, dword [esp + 0x40]
add esp, 8
mov edx, dword [esp + 0x68]
mov dword [ecx + 0x4c], eax
mov eax, dword [ecx + 0x4c]
test eax, eax
je 0x521fa0
mov dword [eax + edx*4], 0xffffffff
not edx
push 0x10
push edx
push dword [esp + 0x64]
mov dword [esp + 0x74], edx
push dword [esp + 0x1c]
call fcn.004f0a30
mov eax, dword [esp + 0x5c]
add esp, 0x10
or dword [eax + 0x24], 0x20000
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 0x13]
test al, al
jne 0x521fd7
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
jmp 0x521fe6
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov eax, dword [ecx + eax*4 + 0x160]
mov edx, dword [esp + 0x44]
push 0
push 0
push 0
push 0
push eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x64]
push dword [eax + 4]
call fcn.004fd080
mov ecx, dword [edi + 0xc]
add esp, 0x18
mov edx, dword [edi + 0x88]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 8]
mov dword [esp + 0x38], eax
cmp dword [ecx + 0x30], edx
jg 0x52203c
mov edx, dword [esp + 0x20]
mov ecx, edi
push 0
push edx
push eax
mov edx, 0x7e
call fcn.004d5d40
add esp, 0xc
jmp 0x522072
lea eax, [edx + 1]
mov dword [edi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x58]
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x7e
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x88]
mov dword [esp + 0x14], ecx
test ecx, ecx
jle 0x52209a
mov eax, dword [edi + 0x58]
lea ecx, [ecx + ecx*4]
mov edx, 0x10
mov word [eax + ecx*4 - 0x12], dx
mov ecx, dword [edi + 0x88]
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x5c], 0
mov edx, ecx
je 0x5220d3
mov eax, dword [edi + 0xc]
mov eax, dword [eax + 0x4c]
mov dword [esp + 0x14], eax
mov eax, ecx
cmp dword [esp + 0x14], 0
je 0x5220d7
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x14]
lea eax, [eax*4 + 4]
sub edx, eax
mov dword [edx], ecx
mov edx, dword [edi + 0x88]
mov eax, edx
jmp 0x5220d7
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
test byte [ecx + 0x30], 0x10
je 0x52219f
lea ecx, [eax - 1]
mov eax, dword [esp + 0x60]
test eax, eax
cmovns ecx, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x522100
mov ecx, 0x665728
jmp 0x522109
mov eax, dword [edi + 0x58]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x28]
add eax, esi
mov esi, dword [esp + 0x34]
mov dword [ecx + 8], eax
mov edx, esi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
push 1
push dword [eax + 0x28]
mov eax, dword [esp + 0x58]
push dword [eax + 4]
call fcn.005215f0
mov eax, dword [edi + 0xc]
add esp, 0xc
mov ecx, dword [edi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x522163
push 0
push esi
push 0
mov edx, 0xd
mov ecx, edi
call fcn.004d5d40
mov ecx, dword [esp + 0x30]
add esp, 0xc
and dword [ecx + 0x30], 0xffffffef
jmp 0x522207
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4], 0xd
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 ecx, dword [esp + 0x24]
and dword [ecx + 0x30], 0xffffffef
jmp 0x522207
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x34]
mov eax, dword [eax + 4]
mov dword [esp + 0x60], eax
lea ecx, [esi + 1]
mov eax, dword [edi + 0xc]
cmp dword [eax + 0x30], edx
jg 0x5221d2
mov edx, dword [esp + 0x60]
push 0
push ecx
push edx
mov edx, 7
mov ecx, edi
call fcn.004d5d40
add esp, 0xc
jmp 0x522207
lea eax, [edx + 1]
mov dword [edi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x58]
mov edx, dword [esp + 0x60]
mov dword [eax + ecx*4 + 4], edx
lea edx, [esi + 1]
mov dword [eax + ecx*4], 7
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x88]
test edx, edx
jle 0x522227
mov eax, dword [edi + 0x58]
lea ecx, [edx + edx*4]
mov edx, 3
mov word [eax + ecx*4 - 0x12], dx
mov edx, dword [edi + 0x88]
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x522236
mov eax, 0x665728
jmp 0x522247
test esi, esi
lea eax, [edx - 1]
cmovns eax, esi
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea eax, [eax + ecx*4]
mov esi, dword [esp + 0x10]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x20]
test edx, edx
je 0x522291
mov al, byte [esi + 0x13]
mov byte [esp + 0xf], al
cmp al, 8
jae 0x522291
lea eax, [esi + 0x98]
xor ecx, ecx
movzx esi, byte [esi + 0x19]
test esi, esi
je 0x52227e
cmp dword [eax + 0xc], edx
je 0x5222b0
inc ecx
add eax, 0x14
cmp ecx, esi
jl 0x522271
mov esi, dword [esp + 0x10]
movzx eax, byte [esp + 0xf]
mov dword [esi + eax*4 + 0x160], edx
inc byte [esi + 0x13]
mov ecx, esi
call fcn.004eec70
mov eax, dword [edi]
mov edx, dword [edi + 0x88]
cmp byte [eax + 0x45], 0
je 0x5222ba
mov eax, 0x665728
mov dword [eax + 8], edx
jmp 0x5222d9
mov esi, dword [esp + 0x10]
mov byte [eax + 6], 1
jmp 0x522291
mov ecx, dword [esp + 0x6c]
lea eax, [edx - 1]
test ecx, ecx
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 8], edx
lea eax, [eax + ecx*4]
jmp 0x5222d9
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x5222ea
mov ecx, dword [esi]
mov edx, eax
call fcn.004eaed0
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
xor ecx, esp
call fcn.005b8427
mov esp, ebp
pop ebp
ret