Function at 0x47da80
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x158
mov eax, dword [0x549944]
xor eax, esp
mov dword [esp + 0x154], eax
push esi
lea eax, [ecx + 0x50]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x88], eax
push edi
mov edi, dword [ecx]
mov dword [esp + 0x80], edx
mov dword [esp + 0x68], 0
mov dword [esp + 0x5c], edi
mov eax, dword [edi]
mov dword [esp + 0x74], eax
lea eax, [edx + edx*4]
shl eax, 4
add ecx, eax
mov esi, dword [edi + 8]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x48], esi
lea eax, [ecx + 0x2f0]
mov dword [esp + 0x78], eax
mov eax, dword [ecx + 0x330]
mov dword [esp + 0x4c], eax
movzx eax, byte [ecx + 0x31c]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x70]
shl ecx, 4
mov eax, dword [eax + 4]
add eax, 8
add eax, ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 0x30]
mov edx, dword [ecx + 0x1ec]
mov dword [esp + 0x30], eax
xor eax, eax
test edx, edx
jle 0x47db44
add ecx, 0x1f0
nop word [eax + eax]
mov edi, dword [esp + 0x30]
cmp dword [ecx], edi
je 0x47dce4
inc eax
add ecx, 4
cmp eax, edx
jl 0x47db30
xorps xmm0, xmm0
movlpd qword [esp + 0xa8], xmm0
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x20]
not ecx
and ecx, dword [ebp + 8]
not edx
and edx, dword [ebp + 0xc]
mov dword [eax + 0x338], ecx
mov ecx, dword [esp + 0x70]
mov dword [eax + 0x33c], edx
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx + 0x44]
mov ecx, dword [esp + 0x80]
call fcn.004e5980
and eax, 1
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x4c]
test byte [eax + 0x24], 0x40
je 0x47dbb1
mov eax, dword [esp + 0x70]
mov dword [esp + 0x3c], 1
test byte [eax + 0x2c], 0x20
je 0x47dbb9
mov dword [esp + 0x3c], 0
mov edx, dword [esi + 0xc]
mov dword [esp + 0x34], edx
mov ecx, dword [edx + 0x44]
mov dword [esp + 0x40], ecx
lea eax, [ecx + 1]
mov dword [edx + 0x44], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x47dbfa
mov edx, dword [edx + 0x48]
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x34]
push 0
push eax
mov ecx, dword [ecx]
call fcn.004055e0
mov edx, dword [esp + 0x3c]
add esp, 8
mov ecx, dword [esp + 0x40]
mov dword [edx + 0x48], eax
mov eax, dword [edx + 0x48]
test eax, eax
je 0x47dc08
mov dword [eax + ecx*4], 0xffffffff
mov edx, dword [esp + 0x20]
not ecx
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x40], ecx
mov dword [edx + 0x300], ecx
mov dword [edx + 0x2fc], ecx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x1c], ecx
mov eax, dword [ecx + 0x44]
mov dword [esp + 0x88], eax
inc eax
mov dword [ecx + 0x44], eax
mov eax, dword [esp + 0x88]
dec eax
test dword [esp + 0x88], eax
jne 0x47dc71
mov eax, dword [esp + 0x88]
mov edx, dword [ecx + 0x48]
mov ecx, dword [ecx]
push 0
lea eax, [eax*8 + 4]
push eax
call fcn.004055e0
mov ecx, dword [esp + 0x24]
add esp, 8
mov edx, dword [esp + 0x20]
mov dword [ecx + 0x48], eax
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x47dc86
mov ecx, dword [esp + 0x88]
mov dword [eax + ecx*4], 0xffffffff
cmp byte [edx + 0x31c], 0
mov eax, dword [esp + 0x88]
not eax
mov dword [esp + 0x88], eax
mov dword [edx + 0x308], eax
jbe 0x47dd30
mov eax, dword [esp + 0x2c]
test byte [eax + 0x24], 8
je 0x47dd30
mov edx, dword [edi + 0x2c]
mov eax, dword [esp + 0x78]
inc edx
mov dword [edi + 0x2c], edx
mov dword [eax], edx
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47dcfe
push 0
push edx
push 0
mov edx, 0x43
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47dd30
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 0x47db5e
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x43
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 [esp + 0x80]
mov eax, ecx
test ecx, ecx
jle 0x47dd4e
mov ecx, dword [esp + 0x78]
cmp dword [ecx], 0
jne 0x47dd4e
dec eax
sub ecx, 0x50
test eax, eax
jg 0x47dd41
mov ecx, dword [esp + 0x70]
lea eax, [eax + eax*4]
add eax, eax
mov eax, dword [ecx + eax*8 + 0x2fc]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x28]
mov dword [esp + 0xa8], ecx
test cl, 0x10
je 0x47de4c
mov edx, dword [eax + 0x1c]
mov edi, dword [eax + 0x18]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov dword [esp + 0x1c], edx
cmp dword [eax + 0x30], ecx
jg 0x47ddaa
push edi
push 0
push edx
mov edx, 0xf
mov ecx, esi
call fcn.00426240
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x47ddd8
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0xf
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0xc]
mov edi, dword [esi + 0x88]
cmp dword [eax + 0x30], edi
jg 0x47de00
push 0
push dword [esp + 0x44]
mov ecx, esi
push edx
mov edx, 0x10
call fcn.00426240
add esp, 0xc
mov edi, eax
jmp 0x47de36
lea eax, [edi + 1]
mov dword [esi + 0x88], eax
lea ecx, [edi + edi*4]
mov eax, dword [esi + 0x58]
mov esi, dword [esp + 0x48]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x40]
mov dword [eax + ecx*4], 0x10
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x20]
mov dword [eax + 0x324], edi
mov byte [eax + 0x31d], 0xd
jmp 0x47e3f7
mov eax, dword [esp + 0x4c]
mov edx, dword [eax + 0x24]
test edx, 0x400
je 0x47e2be
movzx edx, word [eax + 0x28]
inc dword [edi + 0x3c]
mov dword [esp + 0x28], edx
lea eax, [edx + 2]
cmp eax, 1
jne 0x47de9a
mov al, byte [edi + 0x13]
test al, al
jne 0x47de85
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x18], eax
jmp 0x47dec5
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov eax, dword [edi + eax*4 + 0x15c]
mov dword [esp + 0x18], eax
jmp 0x47dec5
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x18], ecx
cmp eax, dword [edi + 0x1c]
jg 0x47deb3
add eax, ecx
lea ecx, [edx + 2]
sub dword [edi + 0x1c], ecx
mov dword [edi + 0x20], eax
jmp 0x47dec5
mov eax, dword [edi + 0x2c]
lea ecx, [eax + 1]
mov dword [esp + 0x18], ecx
lea ecx, [edx + 2]
add eax, ecx
mov dword [edi + 0x2c], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x2fc]
mov dword [esp + 0x34], eax
test edx, edx
je 0x47df41
mov ecx, dword [esp + 0x18]
add ecx, 2
xor esi, esi
mov dword [esp + 0x3c], ecx
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x47df36
test byte [edx + 0xc], 1
lea eax, [esi + ecx]
mov ecx, edi
je 0x47df22
push eax
push dword [esp + 0x48]
push esi
push dword [esp + 0x84]
call fcn.0047cbc0
mov eax, dword [esp + 0x30]
add esp, 0x10
mov ecx, dword [eax + 0x300]
mov dword [esp + 0x34], ecx
jmp 0x47df32
mov edx, dword [edx]
push 1
push eax
mov edx, dword [edx + 0x10]
call fcn.0047d930
add esp, 8
mov ecx, dword [esp + 0x3c]
inc esi
cmp esi, dword [esp + 0x28]
jl 0x47dee4
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esi + 0x88]
mov edx, dword [eax + 0x18]
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x47df6e
push 0
push dword [esp + 0x1c]
mov ecx, esi
push edx
mov edx, 0x43
call fcn.00426240
add esp, 0xc
jmp 0x47dfa4
mov edi, dword [esp + 0x5c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4], 0x43
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0xc]
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 0x88]
inc edx
mov dword [esp + 0x1c], edx
cmp dword [eax + 0x30], ecx
jg 0x47dfd3
push 0
push edx
push dword [esp + 0x30]
mov edx, 0x43
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47e009
mov edx, dword [esp + 0x28]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx*4], 0x43
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x4c]
or eax, 0xffffffff
mov edx, 0xfffffff9
cmp byte [ecx + 0x1c], 0
cmovne eax, edx
mov edx, 0xb
push eax
push dword [ecx + 0x20]
mov ecx, esi
push dword [esp + 0x20]
push dword [esp + 0x40]
push dword [esp + 0x40]
call fcn.00426570
mov ecx, dword [esp + 0x34]
add esp, 0x14
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x70]
mov byte [eax + 0x1c], 0
mov eax, dword [esp + 0x30]
mov dword [ecx + 0x320], eax
mov eax, 0x3d
cmp byte [edx + 0x31], 0
mov edx, 0xa6
cmovne eax, edx
mov edx, dword [ecx + 0x328]
mov byte [ecx + 0x31d], al
mov eax, dword [esi + 0x88]
mov dword [ecx + 0x324], eax
mov ecx, dword [esp + 0x28]
sub ecx, 1
mov dword [esp + 0x24], ecx
js 0x47e2b2
lea eax, [edx + edx*2]
shl eax, 2
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
add eax, 2
add eax, ecx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x1c], edx
cmp ecx, 0x10
jae 0x47e0da
mov eax, dword [esp + 0x4c]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x47e0d6
mov ecx, dword [esp + 0x78]
call fcn.0047ca00
jmp 0x47e29d
mov ecx, dword [esp + 0x24]
test byte [edx + 0xc], 1
je 0x47e2a1
mov eax, dword [esp + 0x74]
cmp byte [eax + 0x49], 0
jne 0x47e1ac
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
sub ecx, 0xc
mov dword [esp + 0x3c], ecx
mov eax, dword [eax + 0x32c]
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
jns 0x47e116
mov ecx, dword [esi + 0x88]
dec ecx
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
je 0x47e125
mov eax, 0x550080
jmp 0x47e12e
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 4]
mov al, byte [eax]
mov byte [esp + 0x12], al
mov eax, dword [esi + 0xc]
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47e16f
mov ecx, dword [esp + 0x2c]
push edx
movzx edx, byte [esp + 0x16]
push ecx
mov ecx, dword [esp + 0x3c]
push ecx
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47e1ac
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x12]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x34]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 8], ecx
mov ecx, dword [edi]
push 0
push 0x30
call fcn.00405440
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
je 0x47e29d
push 0x30
push 0
push eax
call fcn.004e8ed0
mov eax, dword [esp + 0x20]
or ecx, 0xffffffff
add esp, 0xc
mov word [eax + 0x22], cx
mov ecx, eax
mov byte [eax], 0x35
call fcn.0043c260
mov eax, dword [edi]
mov ecx, dword [eax + 0x70]
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x18], ecx
jle 0x47e205
push ecx
push 0x539df8
push edi
call fcn.004081e0
add esp, 0xc
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
push 0
push 0x31
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x7c]
call fcn.00405440
mov ecx, eax
add esp, 8
mov dword [esp + 0x1c], ecx
test ecx, ecx
je 0x47e284
push 0x30
push 0
push ecx
call fcn.004e8ed0
mov ecx, dword [esp + 0x28]
or eax, 0xffffffff
mov edx, dword [esp + 0x44]
add esp, 0xc
mov word [ecx + 0x22], ax
lea eax, [ecx + 0x30]
mov dword [ecx + 8], eax
mov byte [ecx], 0x96
mov byte [eax], 0
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x18], 1
push 0
mov dword [eax + 0x10], ecx
mov dword [ecx + 0x1c], edx
mov ecx, dword [esp + 0x24]
push dword [ecx + 0x308]
push eax
push edi
call fcn.00444130
mov eax, dword [esp + 0x24]
add esp, 0x10
jmp 0x47e28b
mov eax, dword [esp + 0x14]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x74]
mov edx, eax
mov dword [eax + 0xc], 0
call fcn.0043cb90
mov ecx, dword [esp + 0x24]
dec dword [esp + 0x38]
dec ecx
mov dword [esp + 0x24], ecx
test ecx, ecx
jns 0x47e0a6
mov ecx, edi
call fcn.00441070
jmp 0x47e3f7
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x47e476
mov eax, dword [esp + 0x4c]
mov ecx, edi
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
push eax
push dword [esp + 0x48]
mov dword [esp + 0x24], eax
push 0
push dword [esp + 0x84]
call fcn.0047cbc0
mov edx, dword [esp + 0x2c]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x24], ecx
cmp ecx, edx
je 0x47e355
test edx, edx
je 0x47e355
mov al, byte [edi + 0x13]
mov byte [esp + 0x13], al
cmp al, 8
jae 0x47e355
movzx esi, byte [edi + 0x19]
lea eax, [edi + 0x94]
xor ecx, ecx
mov dword [esp + 0x1c], esi
test esi, esi
mov esi, dword [esp + 0x48]
je 0x47e342
cmp dword [eax + 0xc], edx
je 0x47e390
inc ecx
add eax, 0x14
cmp ecx, dword [esp + 0x1c]
jl 0x47e333
movzx eax, byte [esp + 0x13]
mov dword [edi + eax*4 + 0x15c], edx
inc byte [edi + 0x13]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov edx, dword [esi + 0x88]
mov eax, dword [eax + 0x300]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], edx
jg 0x47e396
mov edx, dword [esp + 0x3c]
push ecx
push edx
push dword [esp + 0x38]
mov edx, 0x1f
mov ecx, esi
call fcn.00426240
mov edx, dword [esp + 0x30]
add esp, 0xc
jmp 0x47e3cc
mov byte [eax + 6], 1
jmp 0x47e351
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x3c]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4], 0x1f
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push 1
mov ecx, edi
call fcn.00440fd0
mov edx, dword [esp + 0x34]
add esp, 4
mov ecx, edi
push dword [esp + 0x24]
push 0xffffffffffffffff
call fcn.00440ea0
add esp, 8
mov eax, dword [esp + 0x20]
mov byte [eax + 0x31d], 0xa6
xor eax, eax
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x84], eax
nop word [eax + eax]
mov eax, dword [esp + 0x8c]
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov edx, dword [eax + 0xc]
mov edi, dword [eax + 0x14]
mov dword [esp + 0x14], edx
test edx, edx
jle 0x4806f9
nop
movzx edx, word [edi + 0xa]
xor eax, eax
mov dword [esp + 0x3c], eax
test dl, 6
jne 0x4806d4
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x20]
mov ecx, dword [edi + 0x28]
and ecx, dword [eax + 0x338]
mov eax, dword [edi + 0x2c]
and eax, dword [esi + 0x33c]
or ecx, eax
mov esi, dword [esp + 0x48]
je 0x48051b
mov eax, dword [esp + 0x70]
mov byte [eax + 0x32], 1
jmp 0x4806d0
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x47e8fd
xor ecx, ecx
mov dword [esp + 0x64], 0xa6
mov dword [esp + 0x80], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
test dl, 0x20
je 0x47e4c5
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x3c], 4
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
jmp 0x47e4c9
mov dword [esp + 0x3c], ecx
test dl, 0x10
je 0x47e4e0
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x3c]
mov eax, dword [eax + 0x30]
mov eax, dword [edx + eax]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
test eax, eax
je 0x47e4fa
mov eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x47e696
mov ecx, dword [ecx]
mov dword [esp + 0x24], 0x1a18191b
mov dword [esp + 0x3c], ecx
mov edx, dword [ecx + 0x10]
mov al, byte [edx]
cmp al, 0x96
jne 0x47e51c
mov al, byte [edx + 0x26]
cmp al, 0x97
jne 0x47e525
lea eax, [edx + 0x14]
jmp 0x47e52c
cmp al, 0x77
jne 0x47e584
mov eax, dword [edx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x47e584
mov al, byte [edi + 0x13]
test al, al
jne 0x47e542
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
jmp 0x47e551
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov eax, dword [edi + eax*4 + 0x15c]
mov edx, dword [ecx + 0x10]
mov ecx, edi
push 1
push eax
mov dword [esp + 0x74], eax
call fcn.0047d930
mov edx, dword [esp + 0x44]
add esp, 8
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x28], ecx
movzx eax, byte [edx]
sub eax, 0x36
or eax, 1
mov al, byte [esp + eax + 0x24]
mov byte [esp + 0x12], al
jmp 0x47e5bf
lea eax, [esp + 0x1c]
mov ecx, edi
push eax
call fcn.00443510
mov edx, dword [esp + 0x30]
add esp, 4
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x28], eax
call fcn.0047ca00
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
movzx eax, byte [edx]
mov al, byte [esp + eax - 0x12]
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x6c], eax
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x88]
cmp dword [eax + 0x30], edx
jg 0x47e5eb
movzx edx, byte [esp + 0x12]
push ecx
push dword [esp + 0x44]
mov ecx, esi
push dword [esp + 0x38]
call fcn.00426240
mov edx, dword [esp + 0x34]
add esp, 0xc
jmp 0x47e62a
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov edx, dword [esp + 0x40]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x28]
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x12]
mov dword [eax + 0xc], edx
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
mov dword [eax + 0x10], 0
mov byte [eax + 1], 0
push 1
mov ecx, edi
call fcn.00440fd0
mov edx, dword [esp + 0x70]
add esp, 4
test edx, edx
je 0x47e702
mov al, byte [edi + 0x13]
mov byte [esp + 0x13], al
cmp al, 8
jae 0x47e702
movzx esi, byte [edi + 0x19]
lea eax, [edi + 0x94]
xor ecx, ecx
mov dword [esp + 0x1c], esi
test esi, esi
mov esi, dword [esp + 0x48]
je 0x47e67f
nop dword [eax]
cmp dword [eax + 0xc], edx
je 0x47e690
inc ecx
add eax, 0x14
cmp ecx, dword [esp + 0x1c]
jl 0x47e670
movzx eax, byte [esp + 0x13]
mov dword [edi + eax*4 + 0x15c], edx
inc byte [edi + 0x13]
jmp 0x47e702
mov byte [eax + 6], 1
jmp 0x47e702
mov ecx, dword [esi + 0x88]
xor eax, 1
lea edx, [eax*4 + 0x21]
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x47e6c5
mov ecx, dword [esp + 0x38]
push 0
push ecx
push dword [esp + 0x38]
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47e702
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov byte [eax + ecx*4], dl
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
xor ecx, ecx
mov byte [eax + 1], 0
mov word [eax + 2], cx
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x14]
test eax, eax
je 0x47e7b5
mov eax, dword [eax]
inc dword [edi + 0x2c]
mov ecx, dword [edi + 0x2c]
push 1
mov edx, dword [eax + 0x10]
mov dword [esp + 0x84], ecx
push ecx
mov ecx, edi
mov dword [esp + 0x44], eax
call fcn.0047d930
mov ecx, dword [esp + 0x44]
add esp, 8
mov ecx, dword [ecx + 0x10]
mov dl, byte [ecx]
mov al, dl
cmp al, 0x96
jne 0x47e743
mov al, byte [ecx + 0x26]
cmp al, 0x97
jne 0x47e74c
lea eax, [ecx + 0x14]
jmp 0x47e753
cmp al, 0x77
jne 0x47e75a
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x47e768
mov eax, dword [esp + 0x3c]
mov al, byte [eax]
cmp al, 0x38
je 0x47e775
cmp al, 0x36
je 0x47e775
mov eax, dword [esp + 0x44]
lea eax, [eax*2 + 0x36]
jmp 0x47e783
mov eax, dword [esp + 0x44]
xor eax, 1
lea eax, [eax*2 + 0x37]
mov dword [esp + 0x64], eax
cmp dl, 0x96
jne 0x47e78f
mov dl, byte [ecx + 0x26]
cmp dl, 0x97
jne 0x47e799
lea eax, [ecx + 0x14]
jmp 0x47e7a1
cmp dl, 0x77
jne 0x47e7a8
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x47e7b5
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x78]
call fcn.0047ca00
cmp dword [esp + 0x44], 0
mov edx, dword [esp + 0x20]
mov ecx, dword [esi + 0x88]
sete al
add al, 6
cmp dword [esp + 0x64], 0xa6
mov byte [edx + 0x31d], al
mov eax, dword [esp + 0x30]
mov dword [edx + 0x320], eax
mov dword [edx + 0x324], ecx
je 0x47e3f7
inc dword [edi + 0x2c]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov edx, dword [edi + 0x2c]
mov dword [esp + 0x38], edx
cmp dword [eax + 0x30], ecx
jg 0x47e821
push 0
push edx
push dword [esp + 0x38]
mov edx, 0x7b
mov ecx, esi
call fcn.00426240
mov edx, dword [esp + 0x44]
add esp, 0xc
jmp 0x47e857
mov edi, dword [esp + 0x30]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x7b
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push edx
mov edx, dword [esp + 0x34]
mov ecx, edi
push 0xffffffffffffffff
call fcn.00440ea0
mov eax, dword [esi + 0xc]
add esp, 8
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47e897
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x64]
push ecx
push dword [esp + 0x44]
mov ecx, dword [esp + 0x88]
push ecx
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47e8da
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x64]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x80]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 0xc], ecx
mov eax, dword [esi + 0x88]
test eax, eax
jle 0x47e3f7
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [esi + 0x58]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x47e3f7
test edx, 0x200
je 0x47f7d4
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x6c], 0
mov dword [esp + 0x14], 0
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x60], eax
movzx eax, word [ecx + 0x1a]
mov dword [esp + 0x28], eax
movzx eax, word [ecx + 0x1c]
xor ecx, ecx
mov dword [esp + 0x64], eax
xor eax, eax
mov dword [esp + 0x24], eax
mov byte [esp + 0x12], al
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x38], ecx
mov eax, dword [eax + 0x20]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x2f8]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x70]
test byte [eax + 0x2c], 1
je 0x47e993
cmp byte [eax + 0x2f], cl
mov eax, dword [esp + 0x60]
jle 0x47e997
mov edi, dword [esp + 0x68]
cmp word [edi + 0x32], ax
mov edi, dword [esp + 0x5c]
jbe 0x47e997
mov ecx, 1
mov byte [esp + 0x12], 1
mov dword [esp + 0x38], ecx
jmp 0x47e997
mov eax, dword [esp + 0x60]
movzx eax, ax
mov dword [esp + 0x18], eax
mov dword [esp + 0x58], eax
test dl, 0x20
je 0x47e9d2
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x58]
inc dword [esp + 0x58]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + esi*4]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x6c], eax
movzx eax, word [esi + 0x1a]
mov esi, dword [esp + 0x48]
cmp ecx, eax
cmovbe ecx, eax
mov dword [esp + 0x38], ecx
test dl, 0x10
je 0x47eb13
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + edx*4]
movzx eax, word [edi + 0x1c]
mov edi, dword [esp + 0x5c]
cmp ecx, eax
mov dword [esp + 0x14], edx
cmova eax, ecx
mov ecx, 0x100
mov dword [esp + 0x38], eax
test word [edx + 0xa], cx
je 0x47eac1
inc dword [edi + 0x2c]
mov eax, dword [esp + 0x20]
mov edx, dword [edi + 0x2c]
mov dword [eax + 0x314], edx
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47ea45
push 0
push edx
push 1
mov edx, 0x43
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47ea77
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x43
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x88]
mov esi, dword [esp + 0x18]
mov edx, dword [ecx + 0x314]
mov dword [ecx + 0x318], eax
add edx, edx
mov eax, dword [esp + 0x68]
mov dword [ecx + 0x314], edx
xor ecx, ecx
mov eax, dword [eax + 0x1c]
cmp byte [esi + eax], 1
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x48]
sete cl
xor ecx, dword [esp + 0x44]
or ecx, edx
mov dword [eax + 0x314], ecx
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x6c], 0
mov edx, eax
jne 0x47eb17
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x18]
mov eax, dword [edx + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x1c], ecx
test ecx, ecx
js 0x47eaf4
mov eax, dword [edx + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], 0
je 0x47eb06
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
mov edx, eax
cmp ecx, 0xfffffffe
jne 0x47eb17
mov byte [esp + 0x12], 1
jmp 0x47eb17
mov eax, dword [esp + 0x38]
mov edx, eax
mov byte [esp + 0x12], 1
jmp 0x47eb17
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
movzx eax, word [eax + 0x32]
mov dword [esp + 0x1c], eax
cmp cx, ax
jae 0x47eb51
mov eax, dword [esp + 0x68]
xor ecx, ecx
mov esi, dword [esp + 0x18]
mov eax, dword [eax + 0x1c]
cmp byte [esi + eax], cl
mov esi, dword [esp + 0x48]
sete cl
cmp dword [esp + 0x44], ecx
je 0x47eb5d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x60]
cmp dword [esp + 0x44], 0
je 0x47eb94
cmp ax, cx
jne 0x47eb94
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x64]
mov dword [esp + 0x6c], eax
mov al, byte [esp + 0x12]
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
movzx ecx, si
mov esi, dword [esp + 0x48]
movzx eax, al
mov byte [esp + 0x12], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x64], eax
lea eax, [esp + 0x80]
mov ecx, edi
push eax
push edx
push dword [esp + 0x4c]
mov edx, dword [esp + 0x84]
call fcn.0047d2a0
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x80]
test eax, eax
je 0x47ec2f
cmp word [esp + 0x64], 0
je 0x47ec2f
add eax, ecx
mov dword [esp + 0x84], eax
jne 0x47ebe0
xor eax, eax
mov dword [esp + 0x24], eax
jmp 0x47ec2f
mov ecx, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x47ebe5
sub ecx, edx
push 0
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x20], eax
push eax
test ecx, ecx
je 0x47ec07
call fcn.00405440
jmp 0x47ec0c
call fcn.00404e70
add esp, 8
mov dword [esp + 0x24], eax
test eax, eax
je 0x47ec2b
push dword [esp + 0x1c]
push dword [esp + 0x88]
push eax
call fcn.004e8950
add esp, 0xc
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x300]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x47ec53
test byte [eax + 0xc], 0x28
mov dword [esp + 0x7c], 0
je 0x47ec5b
mov dword [esp + 0x7c], 1
mov edx, dword [esp + 0x14]
test edx, edx
je 0x47ec71
test byte [edx + 0xc], 0x28
mov dword [esp + 0x2c], 0
je 0x47ec79
mov dword [esp + 0x2c], 1
test eax, eax
jne 0x47ecd6
cmp word [esp + 0x60], ax
ja 0x47ecd6
mov edx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], edx
mov al, byte [esp + 0x12]
test al, al
je 0x47eea6
mov eax, dword [esp + 0x40]
add eax, ecx
mov ecx, dword [esi + 0x88]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x47ee53
push 0
push dword [esp + 0x58]
mov edx, 0x46
mov ecx, esi
push 0
call fcn.00426240
mov edx, dword [esp + 0x6c]
add esp, 0xc
jmp 0x47ee8d
mov dword [esp + 0x34], 1
mov edx, ecx
mov dword [esp + 0x60], edx
test eax, eax
je 0x47ec8e
mov eax, dword [eax]
mov edx, dword [esp + 0x28]
add ecx, dword [esp + 0x40]
movzx edx, dx
mov eax, dword [eax + 0x10]
push edx
mov dword [esp + 0x58], ecx
mov edx, eax
push ecx
mov ecx, edi
mov dword [esp + 0x40], eax
call fcn.0047d930
mov eax, dword [esp + 0x74]
mov ecx, 0x100
mov esi, dword [esp + 0x50]
add esp, 8
test word [eax + 0xa], cx
je 0x47ed6c
mov eax, dword [esi + 0x88]
lea ecx, [eax + eax*4]
mov eax, dword [esi]
shl ecx, 2
cmp byte [eax + 0x49], 0
je 0x47ed41
mov ecx, 0x55008c
mov edx, 0x550082
jmp 0x47ed4c
mov eax, dword [esi + 0x58]
add eax, ecx
lea ecx, [eax - 8]
lea edx, [eax - 0x12]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x314]
shr eax, 1
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
mov al, byte [eax + 0x314]
and al, 1
movzx eax, al
mov word [edx], ax
mov ecx, dword [esp + 0x38]
call fcn.0043de90
test eax, eax
je 0x47edd5
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov edx, dword [esp + 0x54]
cmp dword [eax + 0x30], ecx
jg 0x47eda3
push 0
push dword [esp + 0x5c]
mov ecx, esi
push edx
mov edx, 0x32
call fcn.00426240
add esp, 0xc
jmp 0x47edd5
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4], 0x32
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x47edfa
mov eax, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x2c]
movzx edx, ax
call fcn.0047caf0
add esp, 4
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x60]
movzx eax, cx
add edx, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x60], edx
mov cl, byte [eax]
cmp cl, 0x96
jne 0x47ee19
mov cl, byte [eax + 0x26]
cmp cl, 0x97
jne 0x47ee23
add eax, 0x14
jmp 0x47ee2b
cmp cl, 0x77
jne 0x47ee3e
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x47ee3e
mov dword [esp + 0x7c], 1
xor al, al
jmp 0x47eea6
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x78]
call fcn.0047ca00
mov edx, dword [esp + 0x60]
xor al, al
jmp 0x47eea6
mov edi, dword [esp + 0x54]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov al, byte [esp + 0x12]
inc edx
mov dword [esp + 0x60], edx
mov dword [esp + 0x7c], 0
mov dword [esp + 0x34], 1
push dword [esp + 0x80]
movzx eax, al
mov ecx, edi
sub edx, eax
push edx
mov edx, dword [esp + 0x48]
call fcn.0047ca80
mov eax, dword [esp + 0x54]
add esp, 8
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x47eed8
cmp dword [esp + 0x60], eax
je 0x47ef78
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x7c]
mov edx, dword [esi + 0x88]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x44]
mov cl, byte [ecx + eax*2 + 0x53fb78]
mov eax, dword [esi + 0xc]
mov byte [esp + 0x12], cl
cmp dword [eax + 0x30], edx
jg 0x47ef1d
push dword [esp + 0x40]
movzx edx, cl
mov ecx, esi
push dword [esp + 0x5c]
push dword [esp + 0x58]
call fcn.00426240
add esp, 0xc
mov edx, eax
jmp 0x47ef5d
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x12]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x50]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 0xc], ecx
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
jne 0x47ef78
mov eax, dword [esi + 0x58]
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 eax, dword [esp + 0x14]
test eax, eax
je 0x47f118
mov eax, dword [eax]
mov ecx, edi
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
add eax, dword [esp + 0x44]
mov edx, eax
mov dword [esp + 0x80], eax
call fcn.00440fd0
mov eax, dword [esp + 0x68]
add esp, 4
mov edx, dword [esp + 0x28]
mov ecx, edi
movzx eax, ax
push eax
push dword [esp + 0x80]
call fcn.0047d930
mov eax, dword [esp + 0x1c]
mov ecx, 0x100
add esp, 8
test word [eax + 0xa], cx
je 0x47f021
mov eax, dword [esi + 0x88]
lea ecx, [eax + eax*4]
mov eax, dword [esi]
shl ecx, 2
cmp byte [eax + 0x49], 0
je 0x47eff6
mov ecx, 0x55008c
mov edx, 0x550082
jmp 0x47f001
mov eax, dword [esi + 0x58]
add eax, ecx
lea ecx, [eax - 8]
lea edx, [eax - 0x12]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x314]
shr eax, 1
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
mov al, byte [eax + 0x314]
and al, 1
movzx eax, al
mov word [edx], ax
mov ecx, dword [esp + 0x28]
call fcn.0043de90
test eax, eax
je 0x47f090
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47f05a
push 0
push dword [esp + 0x5c]
mov edx, 0x32
mov ecx, esi
push dword [esp + 0x84]
call fcn.00426240
add esp, 0xc
jmp 0x47f090
mov edx, dword [esp + 0x7c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4], 0x32
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x24]
test eax, eax
je 0x47f0c7
mov ecx, dword [esp + 0x28]
push eax
mov eax, dword [esp + 0x68]
movzx edx, ax
call fcn.0047caf0
mov eax, dword [esp + 0x28]
add esp, 4
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x7c]
push eax
movzx eax, cx
mov ecx, edi
push eax
call fcn.0047ca80
add esp, 8
mov ecx, dword [esp + 0x64]
movzx eax, cx
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
mov cl, byte [eax]
cmp cl, 0x96
jne 0x47f0e0
mov cl, byte [eax + 0x26]
cmp cl, 0x97
jne 0x47f0ea
add eax, 0x14
jmp 0x47f0f2
cmp cl, 0x77
jne 0x47f106
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x47f106
mov dword [esp + 0x2c], 1
jmp 0x47f1a3
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x78]
call fcn.0047ca00
jmp 0x47f1a3
cmp byte [esp + 0x13], 0
je 0x47f1a3
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x18]
add eax, edx
mov ecx, dword [esi + 0x88]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x47f15c
push 0
push dword [esp + 0x58]
mov edx, 0x46
mov ecx, esi
push 0
call fcn.00426240
mov edx, dword [esp + 0x24]
add esp, 0xc
jmp 0x47f196
mov edi, dword [esp + 0x54]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
inc edx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x74]
test ecx, ecx
je 0x47f1f9
test edx, edx
je 0x47f1ec
cmp dword [edx + 0x1d0], 0
je 0x47f1cc
mov edx, ecx
mov ecx, dword [esp + 0x74]
call fcn.004050c0
jmp 0x47f1f5
cmp ecx, dword [edx + 0x128]
jb 0x47f1ec
cmp ecx, dword [edx + 0x12c]
jae 0x47f1ec
mov eax, dword [edx + 0x124]
mov dword [ecx], eax
mov dword [edx + 0x124], ecx
jmp 0x47f1f9
push ecx
call fcn.00405050
add esp, 4
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x47f244
test edx, edx
je 0x47f23b
cmp dword [edx + 0x1d0], 0
je 0x47f21b
mov edx, ecx
mov ecx, dword [esp + 0x74]
call fcn.004050c0
jmp 0x47f244
cmp ecx, dword [edx + 0x128]
jb 0x47f23b
cmp ecx, dword [edx + 0x12c]
jae 0x47f23b
mov eax, dword [edx + 0x124]
mov dword [ecx], eax
mov dword [edx + 0x124], ecx
jmp 0x47f244
push ecx
call fcn.00405050
add esp, 4
cmp dword [esp + 0x18], 0
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x88]
mov dword [ecx + 0x324], eax
je 0x47f2f8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov edx, dword [esi + 0x88]
mov cl, byte [eax + ecx*2 + 0x53d93c]
mov eax, dword [esi + 0xc]
mov byte [esp + 0x13], cl
cmp dword [eax + 0x30], edx
jg 0x47f29d
push dword [esp + 0x40]
movzx edx, cl
mov ecx, esi
push dword [esp + 0x5c]
push dword [esp + 0x58]
call fcn.00426240
add esp, 0xc
mov edx, eax
jmp 0x47f2dd
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x13]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x50]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 0xc], ecx
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
jne 0x47f2f8
mov eax, dword [esi + 0x58]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x18]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
cmp dword [esp + 0x3c], 0
jne 0x47f628
mov eax, dword [esp + 0x68]
mov edx, dword [eax + 0xc]
test byte [edx + 0x24], 0x20
jne 0x47f432
mov ecx, dword [esp + 0x70]
movzx eax, word [ecx + 0x2c]
test eax, 0x400
jne 0x47f34e
test eax, 0x1000
je 0x47f330
cmp byte [ecx + 0x31], 1
je 0x47f34e
push dword [esp + 0x50]
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
push edi
call fcn.0047d7c0
mov ecx, dword [esp + 0x58]
add esp, 8
jmp 0x47f630
inc dword [edi + 0x2c]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov edx, dword [edi + 0x2c]
mov dword [esp + 0x34], edx
cmp dword [eax + 0x30], ecx
jg 0x47f382
push 0
push edx
push dword [esp + 0x58]
mov edx, 0x82
mov ecx, esi
call fcn.00426240
mov edx, dword [esp + 0x40]
add esp, 0xc
jmp 0x47f3b8
mov edi, dword [esp + 0x50]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x82
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push edx
mov edx, dword [esp + 0x34]
mov ecx, edi
push 0xffffffffffffffff
call fcn.00440ea0
mov eax, dword [esi + 0xc]
add esp, 8
mov ecx, dword [esi + 0x88]
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
cmp dword [eax + 0x30], ecx
jg 0x47f3fb
push edx
push 0
push edi
mov edx, 0x20
mov ecx, esi
call fcn.00426240
mov ecx, dword [esp + 0x5c]
add esp, 0xc
jmp 0x47f630
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x50]
jmp 0x47f630
mov ecx, dword [esp + 0x50]
cmp dword [esp + 0x30], ecx
je 0x47f62c
mov edx, dword [edx + 8]
mov dword [esp + 0x54], edx
test edx, edx
je 0x47f464
nop dword [eax + eax]
mov eax, dword [edx + 0x38]
and al, 3
cmp al, 2
je 0x47f460
mov edx, dword [edx + 0x14]
test edx, edx
jne 0x47f450
mov dword [esp + 0x54], edx
movzx ecx, word [edx + 0x32]
cmp ecx, 1
jne 0x47f495
mov al, byte [edi + 0x13]
test al, al
jne 0x47f480
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x14], eax
jmp 0x47f4be
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov eax, dword [edi + eax*4 + 0x15c]
mov dword [esp + 0x14], eax
jmp 0x47f4be
mov eax, dword [edi + 0x20]
mov dword [esp + 0x14], eax
cmp ecx, dword [edi + 0x1c]
jg 0x47f4ab
add eax, ecx
sub dword [edi + 0x1c], ecx
mov dword [edi + 0x20], eax
jmp 0x47f4be
mov eax, dword [edi + 0x2c]
lea esi, [eax + 1]
add eax, ecx
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x48]
mov dword [edi + 0x2c], eax
movzx eax, word [edx + 0x32]
xor edi, edi
mov dword [esp + 0x34], 0
mov ecx, eax
cmp di, ax
jae 0x47f5a1
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
nop
mov eax, dword [esp + 0x68]
xor ecx, ecx
movzx edi, word [eax + 0x34]
test edi, edi
je 0x47f519
mov eax, dword [edx + 4]
mov esi, dword [esp + 0x34]
movzx eax, word [eax + esi*2]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax + 4]
mov esi, dword [esp + 0x1c]
cmp si, word [eax]
mov esi, dword [esp + 0x48]
je 0x47f54b
inc ecx
add eax, 2
cmp ecx, edi
jl 0x47f504
or eax, 0xffffffff
mov ecx, dword [esi + 0x88]
movsx edi, ax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x47f550
push dword [esp + 0x2c]
mov edx, 0x60
mov ecx, esi
push edi
push dword [esp + 0x58]
call fcn.00426240
mov edx, dword [esp + 0x60]
add esp, 0xc
jmp 0x47f586
movzx eax, cx
jmp 0x47f51c
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov esi, dword [esp + 0x50]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x2c]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x48]
mov dword [eax + ecx*4], 0x60
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x34]
movzx edi, word [edx + 0x32]
inc ecx
inc dword [esp + 0x2c]
mov dword [esp + 0x34], ecx
cmp ecx, edi
jl 0x47f4e0
mov ecx, edi
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x88]
movzx edi, cx
cmp dword [eax + 0x30], edx
jg 0x47f5d4
push dword [esp + 0x14]
mov edx, 0x1d
mov ecx, esi
push dword [esp + 0x8c]
push dword [esp + 0x38]
call fcn.00426240
add esp, 0xc
mov edx, eax
jmp 0x47f611
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov esi, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x88]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x14]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0x48]
mov dword [eax + ecx*4], 0x1d
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
jne 0x47f628
mov eax, dword [esi + 0x58]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edi
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x68]
mov eax, dword [edx + 0x28]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x47f772
xorps xmm0, xmm0
mov dword [esp + 0xac], edi
lea edx, [esp + 0xa8]
mov dword [esp + 0xc0], 0
xor edi, edi
mov dword [esp + 0xd8], edx
mov edx, dword [esp + 0x68]
movlpd qword [esp + 0xc8], xmm0
movlpd qword [esp + 0xd0], xmm0
mov dword [esp + 0xc4], 0x47da30
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x28], edi
cmp dword [eax], edi
jle 0x47f772
lea ecx, [eax + 4]
mov dword [esp + 0x34], ecx
nop dword [eax]
nop word [eax + eax]
mov eax, dword [edx + 4]
cmp word [eax + edi*2], 0xfffe
jne 0x47f754
mov esi, dword [esp + 0x70]
mov dword [esp + 0xb4], edi
mov eax, dword [ecx]
mov dword [esp + 0xa8], eax
mov edx, dword [esi + 0x10]
test edx, edx
je 0x47f6e5
lea ecx, [esp + 0xc0]
call fcn.00439220
mov esi, dword [esi + 8]
test esi, esi
je 0x47f71e
mov edi, dword [esi]
add esi, 4
test edi, edi
jle 0x47f71a
nop word [eax + eax]
mov edx, dword [esi]
lea ecx, [esp + 0xc0]
call fcn.004392c0
test eax, eax
jne 0x47f71a
dec edi
add esi, 0x18
test edi, edi
jg 0x47f700
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x70]
mov esi, dword [eax + 0xc]
test esi, esi
je 0x47f750
mov edi, dword [esi]
add esi, 4
test edi, edi
jle 0x47f74c
mov edx, dword [esi]
lea ecx, [esp + 0xc0]
call fcn.004392c0
test eax, eax
jne 0x47f74c
dec edi
add esi, 0x18
test edi, edi
jg 0x47f732
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x1c]
inc edi
add dword [esp + 0x34], 0x18
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x28], edi
cmp edi, dword [eax]
jl 0x47f6b0
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x20]
test dword [ecx + 0x24], 0x1000
je 0x47f78c
mov byte [edi + 0x31d], 0xa6
jmp 0x47f79c
cmp dword [esp + 0x44], 0
sete al
add al, 6
mov byte [edi + 0x31d], al
mov eax, dword [esp + 0x50]
mov dword [edi + 0x320], eax
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edi + 0x31e], al
test byte [ecx + 0x24], 0xf
jne 0x47f7be
mov byte [edi + 0x31f], 1
cmp dword [esp + 0x3c], 0
je 0x480512
xor eax, eax
mov dword [esp + 0x68], eax
jmp 0x47e3f9
test edx, 0x2000
je 0x480459
mov eax, dword [edi + 0x28]
inc dword [edi + 0x2c]
mov dword [esp + 0x94], eax
inc eax
mov dword [edi + 0x28], eax
mov ecx, dword [esi + 0xc]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], 0
mov edx, dword [ecx + 0x44]
mov dword [esp + 0x44], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], ecx
lea eax, [edx + 1]
mov dword [esp + 0x6c], edx
mov dword [ecx + 0x44], eax
lea eax, [edx - 1]
test edx, eax
jne 0x47f84d
lea eax, [edx*8 + 4]
mov edx, dword [ecx + 0x48]
mov ecx, dword [ecx]
push 0
push eax
call fcn.004055e0
mov ecx, dword [esp + 0x24]
add esp, 8
mov edx, dword [esp + 0x6c]
mov dword [ecx + 0x48], eax
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x47f85b
mov dword [eax + edx*4], 0xffffffff
mov eax, dword [esp + 0x2c]
not edx
mov dword [esp + 0x6c], edx
xor edx, edx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x28]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x64], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x20]
mov dword [eax + 0x320], edx
mov edx, dword [esp + 0x70]
mov byte [eax + 0x31d], 0x3f
mov al, byte [edx + 0x2e]
cmp al, 1
jbe 0x47fa04
mov ecx, dword [esp + 0x74]
movzx eax, al
sub eax, dword [esp + 0x80]
dec eax
mov dword [esp + 0x84], eax
push 0
lea eax, [eax + eax*4]
shl eax, 4
add eax, 0x58
push eax
test ecx, ecx
je 0x47f8e5
call fcn.00405440
mov ecx, eax
mov dword [esp + 0x68], ecx
jmp 0x47f8f0
call fcn.00404e70
mov ecx, eax
mov dword [esp + 0x68], eax
add esp, 8
test ecx, ecx
jne 0x47f911
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
mov ecx, dword [esp + 0x154]
xor ecx, esp
call fcn.004e5962
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x84]
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x2c]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x18], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x28], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x38], xmm0
movups xmm0, xmmword [eax + 0x40]
mov eax, dword [esp + 0x70]
movups xmmword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
add eax, 8
mov dword [esp + 0x84], eax
cmp edx, 1
jl 0x47f9b7
mov esi, dword [esp + 0x20]
add esi, 0x36c
add ecx, 0x58
movzx eax, byte [esi]
lea esi, [esi + 0x50]
lea ecx, [ecx + 0x50]
lea eax, [eax + eax*4]
shl eax, 4
add eax, dword [esp + 0x84]
movups xmm0, xmmword [eax]
movups xmmword [ecx - 0x50], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx - 0x40], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx - 0x30], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx - 0x20], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx - 0x10], xmm0
sub edx, 1
jne 0x47f971
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x70]
test byte [eax + 0x2c], 0x10
jne 0x47fb31
test byte [ecx + 0x24], 0x20
jne 0x47fa48
inc dword [edi + 0x2c]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov edx, dword [edi + 0x2c]
mov dword [esp + 0x44], edx
cmp dword [eax + 0x30], ecx
jg 0x47fa0d
push 0
push edx
push 0
mov edx, 0x46
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47fb27
mov eax, dword [edx + 4]
mov dword [esp + 0x60], eax
jmp 0x47f9bb
mov edi, dword [esp + 0x5c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x46
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
jmp 0x47fb27
mov ecx, dword [ecx + 8]
mov dword [esp + 0x54], ecx
test ecx, ecx
je 0x47fa67
mov eax, dword [ecx + 0x38]
and al, 3
cmp al, 2
je 0x47fa63
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x47fa53
mov dword [esp + 0x54], ecx
mov eax, dword [edi + 0x28]
mov dword [esp + 0x44], eax
inc eax
mov dword [edi + 0x28], eax
mov eax, dword [esi + 0xc]
movzx edx, word [ecx + 0x32]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47fa9c
push 0
push edx
push dword [esp + 0x4c]
mov edx, 0x6c
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x47fad2
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov esi, dword [esp + 0x44]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x48]
mov dword [eax + ecx*4], 0x6c
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi + 8]
mov ecx, edi
mov edx, dword [esp + 0x54]
mov dword [esp + 0x84], eax
call fcn.00452430
mov dword [esp + 0x54], eax
test eax, eax
je 0x47fb27
mov edx, dword [esp + 0x84]
mov ecx, dword [edx]
cmp byte [ecx + 0x49], 0
je 0x47fb0e
push eax
mov edx, 0xfffffff7
call fcn.00426b10
add esp, 4
jmp 0x47fb27
mov eax, dword [edx + 0x88]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x58]
mov edx, dword [esp + 0x54]
mov byte [eax + ecx*4 - 0x13], 0xf7
mov dword [eax + ecx*4 - 4], edx
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x88]
mov dword [esp + 0x84], edx
cmp dword [eax + 0x30], edx
jg 0x47fb66
push 0
push dword [esp + 0x2c]
mov edx, 0x43
mov ecx, esi
push 0
call fcn.00426240
add esp, 0xc
mov dword [esp + 0x84], eax
jmp 0x47fb9c
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4], 0x43
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 eax, dword [esp + 0x8c]
xor edx, edx
cmp dword [eax + 0xc], 1
jle 0x47fcbc
xor ecx, ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x34], ecx
xor edi, edi
nop dword [eax + eax]
mov eax, dword [eax + 0x14]
add eax, ecx
mov esi, dword [eax]
mov dword [esp + 0x2c], esi
cmp eax, dword [esp + 0x1c]
je 0x47fc12
test byte [esi + 4], 1
jne 0x47fc12
test byte [eax + 0xa], 6
jne 0x47fc12
mov esi, 0x1fff
test word [eax + 0xc], si
je 0x47fc12
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x74]
push 0
push 0
call fcn.0043cd70
mov ecx, dword [esp + 0x7c]
mov edx, edi
push eax
call fcn.0043c630
mov ecx, dword [esp + 0x40]
add esp, 0xc
mov edx, dword [esp + 0x54]
mov edi, eax
mov eax, dword [esp + 0x8c]
inc edx
add ecx, 0x30
mov dword [esp + 0x54], edx
mov dword [esp + 0x34], ecx
cmp edx, dword [eax + 0xc]
jl 0x47fbc0
mov esi, dword [esp + 0x48]
mov edx, edi
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x5c]
test edx, edx
je 0x47fcbc
mov ecx, dword [edi]
push 0
push 0x30
call fcn.00405440
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
je 0x47fca7
push 0x30
push 0
push eax
call fcn.004e8ed0
mov ecx, dword [esp + 0x38]
or eax, 0xffffffff
mov edx, dword [esp + 0x20]
add esp, 0xc
mov word [ecx + 0x22], ax
mov byte [ecx], 0x2c
mov dword [ecx + 0x10], edx
mov eax, dword [edx + 4]
and eax, 0x200100
or dword [ecx + 4], eax
call fcn.0043c260
mov eax, dword [edi]
mov ecx, dword [eax + 0x70]
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0x18], ecx
jle 0x47fcb6
push ecx
push 0x539df8
push edi
call fcn.004081e0
add esp, 0xc
jmp 0x47fcb2
mov edx, dword [esp + 0x14]
mov ecx, dword [edi]
call fcn.0043cb90
mov eax, dword [esp + 0x2c]
mov edx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x70]
mov ecx, 0x400
mov ax, word [eax + 0x2c]
and ax, cx
mov ecx, dword [esp + 0x7c]
or ax, 0x20
movzx eax, ax
mov dword [esp + 0x98], eax
xor eax, eax
mov dword [esp + 0x50], eax
cmp dword [ecx + 0xc], eax
jle 0x480304
mov dword [esp + 0xb8], 0x10
mov dword [esp + 0xa8], 1
mov esi, dword [esp + 0x30]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0x14]
cmp dword [eax + 0x14], esi
mov esi, dword [esp + 0x48]
je 0x47fd2c
mov esi, 0x400
test word [eax + 0xc], si
mov esi, dword [esp + 0x48]
je 0x4802ee
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x58], ecx
test edx, edx
je 0x47fd43
test byte [eax + 4], 1
jne 0x47fd43
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x94]
mov edx, dword [esp + 0x64]
mov ecx, edi
push dword [esp + 0x9c]
push 0
push 0
push eax
call fcn.00488860
mov edx, eax
add esp, 0x14
mov dword [esp + 0x90], edx
test edx, edx
je 0x4802ea
mov eax, dword [esp + 0x20]
push 0
movzx ecx, byte [eax + 0x31c]
push ecx
push dword [esp + 0x88]
lea ecx, [edx + 0x2f0]
mov edx, dword [esp + 0x6c]
push ecx
mov ecx, edi
call fcn.0047c620
mov eax, dword [esp + 0x80]
add esp, 0x10
test byte [eax + 0x2c], 0x10
jne 0x4801f5
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x50]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x2c], ecx
test byte [eax + 0x24], 0x20
jne 0x47fe82
push 0
push dword [esp + 0x28]
mov edx, eax
mov ecx, edi
push dword [esp + 0x38]
push 0xffffffffffffffff
call fcn.004413e0
mov ecx, dword [esi + 0xc]
mov edx, eax
mov eax, dword [esi + 0x88]
add esp, 0x10
mov dword [esp + 0x58], eax
cmp dword [ecx + 0x30], eax
jg 0x47fe22
push edx
push 0
push dword [esp + 0x4c]
mov edx, 0x2d
mov ecx, esi
call fcn.00426240
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x58], ecx
jmp 0x47fe5e
mov ecx, dword [esp + 0x58]
inc eax
mov edi, dword [esp + 0x44]
mov dword [esi + 0x88], eax
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x2d
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x58]
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
jne 0x4801f5
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
mov edx, dword [esp + 0x2c]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x4801f5
mov ecx, eax
call fcn.0044b0f0
mov dword [esp + 0x9c], eax
movzx ecx, word [eax + 0x32]
mov eax, ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x40], eax
cmp eax, 1
jne 0x47fecb
mov cl, byte [edi + 0x13]
test cl, cl
jne 0x47feb6
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x18], eax
jmp 0x47ff09
dec cl
movzx eax, cl
mov byte [edi + 0x13], cl
mov eax, dword [edi + eax*4 + 0x15c]
mov dword [esp + 0x18], eax
jmp 0x47ff09
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi + 0x20]
mov dword [esp + 0x18], edx
cmp eax, ecx
jg 0x47fee9
add eax, edx
mov edx, dword [esp + 0x40]
sub ecx, edx
mov dword [edi + 0x20], eax
mov dword [edi + 0x1c], ecx
jmp 0x47fefc
mov eax, dword [edi + 0x2c]
mov edx, dword [esp + 0x40]
lea ecx, [eax + 1]
add eax, edx
mov dword [esp + 0x18], ecx
mov dword [edi + 0x2c], eax
xor eax, eax
cmp ax, word [esp + 0x4c]
jae 0x47ffcd
mov esi, dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x64]
push 0
push esi
mov eax, dword [eax + 4]
push dword [esp + 0x38]
movsx eax, word [eax + ecx*2]
mov ecx, edi
push eax
call fcn.004413e0
add esp, 0x10
mov dword [esp + 0x54], eax
cmp eax, esi
je 0x47ffb3
mov ecx, dword [edi + 8]
mov dword [esp + 0xa4], ecx
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x88]
mov dword [esp + 0xa0], eax
cmp dword [edx + 0x30], eax
mov edx, dword [esp + 0x54]
jg 0x47ff79
push 0
push esi
push edx
mov edx, 0x4c
call fcn.00426240
add esp, 0xc
jmp 0x47ffb3
inc eax
mov dword [ecx + 0x88], eax
mov eax, dword [esp + 0xa0]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0xa4]
mov eax, dword [eax + 0x58]
mov dword [eax + ecx*4], 0x4c
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 [esp + 0x34]
inc esi
mov edx, dword [esp + 0x40]
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, edx
jl 0x47ff13
mov esi, dword [esp + 0x48]
cmp dword [esp + 0x2c], 0
je 0x48006b
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov dword [esp + 0x58], ecx
cmp dword [eax + 0x30], ecx
jg 0x48000b
push dword [esp + 0x18]
mov edx, 0x1e
mov ecx, esi
push 0
push dword [esp + 0x4c]
call fcn.00426240
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x58], ecx
jmp 0x480045
mov edx, dword [esp + 0x44]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4], 0x1e
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x58]
mov eax, dword [esi]
mov edx, dword [esp + 0x40]
cmp byte [eax + 0x49], 0
jne 0x480060
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
cmp dword [esp + 0x2c], 0
jl 0x48016e
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x480093
push dword [esp + 0x24]
mov ecx, esi
push edx
push dword [esp + 0x20]
mov edx, 0x63
call fcn.00426240
add esp, 0xc
jmp 0x4800c9
mov edx, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x40]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4], 0x63
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x88]
cmp dword [eax + 0x30], edx
jg 0x4800f6
push dword [esp + 0x18]
mov edx, 0x7f
mov ecx, esi
push dword [esp + 0x28]
push dword [esp + 0x4c]
call fcn.00426240
add esp, 0xc
mov edx, eax
jmp 0x480130
mov edi, dword [esp + 0x44]
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x18]
mov dword [eax + ecx*4 + 0xc], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x7f
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
jne 0x48014b
mov eax, dword [esi + 0x58]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x40]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
cmp dword [esp + 0x2c], 0
je 0x48016e
mov eax, dword [esi + 0x88]
test eax, eax
jle 0x48016e
mov edx, dword [esp + 0xb8]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
mov word [eax + ecx*4 - 0x12], dx
cmp word [esp + 0x4c], 1
jne 0x4801d0
cmp dword [esp + 0x18], 0
je 0x4801f5
mov al, byte [edi + 0x13]
mov byte [esp + 0x13], al
cmp al, 8
jae 0x4801f5
movzx edx, byte [edi + 0x19]
lea eax, [edi + 0x94]
xor ecx, ecx
test edx, edx
je 0x4801b5
mov esi, dword [esp + 0x18]
cmp dword [eax + 0xc], esi
mov esi, dword [esp + 0x48]
je 0x4801ca
inc ecx
add eax, 0x14
cmp ecx, edx
jl 0x4801a0
movzx eax, byte [esp + 0x13]
mov ecx, dword [esp + 0x18]
mov dword [edi + eax*4 + 0x15c], ecx
inc byte [edi + 0x13]
jmp 0x4801f5
mov byte [eax + 6], 1
jmp 0x4801f5
push dword [esp + 0x40]
mov edx, dword [esp + 0x1c]
mov ecx, edi
call fcn.00440fd0
mov eax, dword [esp + 0x44]
add esp, 4
cmp eax, dword [edi + 0x1c]
jle 0x4801f5
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [edi + 0x20], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x48021e
push 0
push dword [esp + 0x70]
mov edx, 0xe
mov ecx, esi
push dword [esp + 0x30]
call fcn.00426240
add esp, 0xc
jmp 0x480254
mov edx, dword [esp + 0x28]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x6c]
mov dword [eax + ecx*4], 0xe
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x480282
mov edx, dword [esi + 0x88]
jns 0x480267
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
je 0x480276
mov eax, 0x550080
jmp 0x48027f
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x3c]
cmp byte [edx + 0x32], 0
mov ecx, dword [edx + 0x330]
cmovne eax, dword [esp + 0xa8]
mov dword [esp + 0x3c], eax
test dword [ecx + 0x24], 0x200
je 0x4802db
cmp dword [esp + 0x50], 0
je 0x4802bc
mov eax, dword [esp + 0x38]
cmp dword [ecx + 0x20], eax
jne 0x4802db
mov eax, dword [esp + 0x64]
test byte [eax + 0x24], 0x20
je 0x4802d2
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x4802db
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x38], eax
jmp 0x4802e3
mov dword [esp + 0x38], 0
mov ecx, edx
call fcn.004896d0
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x14]
inc eax
mov dword [esp + 0x50], eax
cmp eax, dword [ecx + 0xc]
jl 0x47fd03
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x38]
mov dword [edi + 0x328], eax
test eax, eax
je 0x480323
mov eax, dword [esp + 0x94]
mov dword [edi + 0x2f8], eax
mov edx, dword [esp + 0x14]
test edx, edx
je 0x48033b
mov ecx, dword [esp + 0x74]
mov dword [edx + 0xc], 0
call fcn.0043cb90
mov ecx, dword [esp + 0x84]
mov edx, dword [esi + 0x88]
test ecx, ecx
jns 0x48034f
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
je 0x48035e
mov eax, 0x550080
jmp 0x480367
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov edx, dword [edi + 0x2fc]
cmp dword [eax + 0x30], ecx
jg 0x480394
push 0
push edx
push 0
mov edx, 0xd
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x4803c6
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0xd
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 eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x4803e5
mov eax, dword [esp + 0x6c]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [esi + 0x88]
mov dword [ecx], eax
mov eax, dword [esp + 0x70]
cmp byte [eax + 0x2e], 1
jbe 0x48043c
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x48043c
mov edi, dword [esp + 0x74]
test edi, edi
je 0x480433
cmp dword [edi + 0x1d0], 0
je 0x480413
mov edx, ecx
mov ecx, edi
call fcn.004050c0
jmp 0x48043c
cmp ecx, dword [edi + 0x128]
jb 0x480433
cmp ecx, dword [edi + 0x12c]
jae 0x480433
mov eax, dword [edi + 0x124]
mov dword [ecx], eax
mov dword [edi + 0x124], ecx
jmp 0x48043c
push ecx
call fcn.00405050
add esp, 4
cmp dword [esp + 0x3c], 0
jne 0x47e3f7
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x78]
call fcn.0047ca00
jmp 0x47e3f7
test byte [esp + 0xa8], 0x20
jne 0x47e3ec
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x20]
movzx eax, byte [ecx + 0x53ee3c]
mov byte [edi + 0x31d], al
mov eax, dword [esp + 0x30]
mov dword [edi + 0x320], eax
mov al, byte [ecx + 0x53d25c]
mov edx, dword [esi + 0x88]
mov byte [esp + 0x13], al
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], edx
jg 0x4804bc
mov ecx, dword [esp + 0x38]
movzx edx, byte [esp + 0x13]
push 0
push ecx
push dword [esp + 0x38]
mov ecx, esi
call fcn.00426240
add esp, 0xc
mov edx, eax
jmp 0x4804fd
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x13]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 8], ecx
lea eax, [edx + 1]
mov byte [edi + 0x31f], 1
mov dword [edi + 0x324], eax
jmp 0x47e3f7
mov eax, dword [esp + 0x68]
jmp 0x47e3f9
mov eax, dword [esp + 0x78]
mov ecx, dword [edi]
mov dword [esp + 0x90], ecx
cmp dword [eax], 0
je 0x480537
test byte [ecx + 4], 1
je 0x4806d0
mov eax, dword [esp + 0x84]
cmp eax, 1
jne 0x4805c6
mov eax, dword [esp + 0x20]
xorps xmm0, xmm0
mov dword [esp + 0xc0], 0
movlpd qword [esp + 0xc8], xmm0
movlpd qword [esp + 0xd0], xmm0
mov eax, dword [eax + 0x2f4]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0xb8], eax
lea eax, [esp + 0xb8]
mov dword [esp + 0xc4], 0x444c80
mov dword [esp + 0xd8], eax
test ecx, ecx
je 0x4805ae
mov edx, ecx
lea ecx, [esp + 0xc0]
call fcn.00439220
cmp byte [esp + 0xd4], 0
je 0x4805cb
mov ecx, 2
mov dword [esp + 0x24], ecx
jmp 0x4806d4
cmp eax, 3
jge 0x4805f1
movzx edx, word [edi + 0xa]
test edx, 0x1000
je 0x4805f1
mov ecx, dword [esp + 0x24]
test ecx, ecx
jne 0x4806d4
mov ecx, 3
mov dword [esp + 0x24], ecx
jmp 0x4806d4
test edx, 0x200
je 0x48067e
mov eax, dword [esp + 0x20]
mov edx, dword [esi + 0x88]
mov dword [esp + 0x3c], edx
mov ecx, dword [eax + 0x314]
mov eax, ecx
shr eax, 1
and ecx, 1
mov dword [esp + 0x1c], eax
add ecx, 0x15
mov eax, dword [esi + 0xc]
mov dword [esp + 0xa8], ecx
cmp dword [eax + 0x30], edx
jg 0x480649
mov edx, dword [esp + 0x1c]
push 0
push 0
push edx
mov edx, ecx
mov ecx, esi
call fcn.00426240
add esp, 0xc
mov dword [esp + 0x3c], eax
jmp 0x48067e
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx*4 + 4], edx
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0xa8]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
push 0x10
push dword [esp + 0x8c]
push dword [esp + 0x98]
push dword [esp + 0x68]
call fcn.00444130
mov ecx, dword [esp + 0x4c]
add esp, 0x10
test ecx, ecx
je 0x4806cb
mov eax, dword [esi]
mov edx, dword [esi + 0x88]
cmp byte [eax + 0x49], 0
je 0x4806b7
mov eax, 0x550080
jmp 0x4806c8
test ecx, ecx
lea eax, [edx - 1]
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
or word [edi + 0xa], 4
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
add edi, 0x30
dec eax
mov dword [esp + 0x14], eax
test eax, eax
jg 0x47e430
mov eax, dword [esp + 0x8c]
mov edx, dword [eax + 0xc]
mov edi, dword [eax + 0x14]
mov dword [esp + 0x14], edx
mov dword [esp + 0x84], ecx
test ecx, ecx
jg 0x47e410
test edx, edx
jle 0x480851
add edi, 0xc
mov dword [esp + 0x28], edi
nop word [eax + eax]
test byte [edi - 2], 6
jne 0x480839
movzx eax, word [edi]
mov esi, 0xb
test al, 0x82
setne cl
bt ax, si
mov esi, dword [esp + 0x5c]
setb al
test al, cl
je 0x480839
mov ecx, dword [esp + 0x30]
cmp dword [edi + 8], ecx
jne 0x480839
mov eax, dword [esp + 0x78]
cmp dword [eax], 0
jne 0x480839
mov eax, dword [edi - 0xc]
xor edi, edi
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x28]
push edi
push 0x83
push dword [eax + 0x10]
push ecx
lea ecx, [esp + 0x108]
call fcn.004832a0
mov edx, eax
add esp, 0x10
test edx, edx
je 0x4807d5
nop word [eax + eax]
mov ecx, dword [edx + 0x20]
mov eax, dword [edx + 0x24]
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x4807c3
mov eax, dword [edx + 0x20]
or eax, dword [edx + 0x24]
jne 0x4807be
test byte [edx + 0xc], 0x82
jne 0x4807d7
test edi, edi
cmove edi, edx
lea ecx, [esp + 0xf8]
call fcn.00483000
mov edx, eax
test edx, edx
jne 0x4807a0
mov edx, edi
test edx, edx
je 0x480831
test byte [edx + 0xa], 4
jne 0x480831
mov eax, dword [edx]
push 0x10
push dword [esp + 0x8c]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xc8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0xd8], xmm0
movups xmm0, xmmword [eax + 0x20]
mov eax, dword [esp + 0x98]
movups xmmword [esp + 0xe8], xmm0
mov eax, dword [eax + 0xc]
mov dword [esp + 0xd4], eax
lea eax, [esp + 0xc8]
push eax
push esi
call fcn.00444130
add esp, 0x10
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
dec edx
add edi, 0x30
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edi
test edx, edx
jg 0x480720
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x78]
mov edi, dword [eax]
test edi, edi
je 0x480971
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x88]
mov dword [ecx + 0x30c], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x480893
push 0
push edi
push 1
mov edx, 0x43
mov ecx, esi
call fcn.00426240
add esp, 0xc
jmp 0x4808c5
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x43
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 edx, dword [esp + 0x5c]
xor edi, edi
cmp byte [edx + 0x19], 0
jbe 0x4808ff
lea esi, [edx + 0xa0]
cmp byte [esi - 6], 0
je 0x4808f3
mov al, byte [edx + 0x13]
cmp al, 8
jae 0x4808f3
movzx ecx, al
mov eax, dword [esi]
mov dword [edx + ecx*4 + 0x15c], eax
inc byte [edx + 0x13]
movzx eax, byte [edx + 0x19]
inc edi
add esi, 0x14
cmp edi, eax
jl 0x4808d7
mov eax, dword [esp + 0x8c]
xor edi, edi
mov esi, dword [esp + 0x8c]
mov byte [edx + 0x19], 0
mov esi, dword [esi + 0x14]
cmp dword [eax + 0xc], edi
jle 0x480971
nop dword [eax + eax]
test byte [esi + 0xa], 6
jne 0x480968
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x20]
mov ecx, dword [esi + 0x28]
and ecx, dword [eax + 0x338]
mov eax, dword [esi + 0x2c]
and eax, dword [edx + 0x33c]
or ecx, eax
mov edx, dword [esp + 0x5c]
jne 0x480961
push 0x10
push dword [esp + 0x8c]
push dword [esi]
push edx
call fcn.00444130
add esp, 0x10
or word [esi + 0xa], 4
mov eax, dword [esp + 0x8c]
inc edi
add esi, 0x30
cmp edi, dword [eax + 0xc]
jl 0x480920
mov ecx, dword [esp + 0x20]
pop edi
pop esi
mov eax, dword [ecx + 0x338]
mov edx, dword [ecx + 0x33c]
mov ecx, dword [esp + 0x154]
xor ecx, esp
call fcn.004e5962
mov esp, ebp
pop ebp
ret