Function at 0x420059
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3dc
mov eax, dword [0x55f9d4]
mov esi, dword [esp + 0x3f0]
xor eax, esp
mov dword [esp + 0x3d8], eax
mov dword [esp], esi
call fcn.0041cfa3
xor ebx, ebx
mov ecx, esi
mov dword [esi + 4], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x18], ebx
mov dword [esi + 0x24], ebx
mov dword [esi + 0x20], ebx
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x28], ebx
call fcn.0041c490
cmp dword [esi + 0x48], ebx
jle 0x420135
xor ebx, ebx
xor edi, edi
xor eax, eax
mov edx, dword [esi + 0x50]
imul esi, eax, 0x6c
mov ecx, dword [edx + esi + 0x30]
test ecx, ecx
jne 0x4200ca
lea ecx, [edx + esi + 0x30]
mov dword [ecx], 0x4b2970
mov ecx, 0x4b2970
movzx edx, word [ecx]
test dx, dx
je 0x4200f2
add ecx, 4
movzx esi, word [ecx - 2]
test esi, esi
je 0x4200f2
movzx edx, dx
inc edi
sub ebx, edx
movzx edx, word [ecx]
add ecx, 4
lea ebx, [ebx + esi + 1]
test dx, dx
jne 0x4200d5
mov esi, dword [esp + 0x3f0]
inc eax
cmp eax, dword [esi + 0x48]
jl 0x4200ad
mov eax, dword [esi + 8]
test eax, eax
jg 0x420146
mov eax, 0x1000
cmp ebx, 0xfa0
jg 0x420146
mov eax, 0x800
cmp ebx, 0x7d0
jg 0x420146
xor eax, eax
cmp ebx, 0x3e8
setg al
shl eax, 9
add eax, 0x200
jmp 0x420146
mov eax, dword [esi + 8]
mov ecx, 0x200
test eax, eax
cmovg ecx, eax
xor edi, edi
mov eax, ecx
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], 0
mov ebp, dword [esi + 0xc]
mov dword [esp], 0x30
mov esi, eax
call fcn.00418288
mov dword [esp + 0x34], esi
sub esi, ebp
mov dword [esp + 0xe4], eax
mov dword [esp + 0xf4], ebp
lea eax, [esi*8]
mov dword [esp], eax
call fcn.00418288
mov ecx, dword [esp + 0xe4]
test ecx, ecx
je 0x422faf
test eax, eax
je 0x422faf
mov dword [esp + 0x104], eax
mov eax, 0x8000
mov edx, 0
sub eax, dword [esp + 0xf4]
cmp esi, 2
mov dword [esp + 0x40], eax
lea eax, [esi - 1]
jl 0x4201e1
mov ebp, dword [esp + 0xf4]
mov edx, dword [esp + 0x104]
not ebp
add edx, 8
add ebp, dword [esp + 0x34]
mov dword [edx - 4], edx
add edx, 8
dec ebp
jne 0x4201d6
mov edx, eax
mov ecx, dword [esp + 0x104]
xor ebp, ebp
add eax, esi
mov dword [ecx + edx*8 + 4], ebp
mov ebp, dword [esp + 0xe4]
xor edx, edx
mov dword [ebp + 0xc], 1
mov dword [ebp + 0x10], edx
mov dword [ebp + 0x1c], ecx
mov ecx, dword [esp + 0x40]
lea edx, [ebp + 0x20]
mov dword [ebp + 0x18], edx
cdq
mov dword [ebp], esi
mov dword [ebp + 4], ecx
mov dword [ebp + 0x14], esi
idiv esi
mov edx, ebp
xor ecx, ecx
add edx, 0x28
mov dword [ebp + 8], eax
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0x24], edx
mov word [ebp + 0x28], si
mov esi, dword [esp + 0x3f0]
mov word [ebp + 0x2a], 0xffff
mov dword [ebp + 0x2c], ecx
mov dword [esp + 4], ebp
mov dword [esp], esi
call fcn.0041b5ab
imul eax, dword [esi + 0x48], 0x8c
mov dword [esp], eax
call fcn.00418288
mov dword [esp + 0x38], eax
xor eax, eax
cmp dword [esi + 0x48], eax
jle 0x42092e
xor ebp, ebp
mov ecx, esi
xor esi, esi
dec ebp
mov eax, dword [ecx + 0x50]
imul ecx, esi, 0x6c
mov edx, dword [eax + ecx]
mov eax, dword [eax + ecx + 0xc]
mov cl, byte [edx]
mov dword [esp + 0x40], eax
mov eax, edx
cmp cl, 0x4e
jg 0x4202a0
test cl, cl
je 0x4202da
cmp cl, 0x31
mov edx, ebp
jne 0x42035c
cmp byte [eax + 1], 0
jmp 0x4202de
cmp cl, 0x4f
je 0x4202f0
cmp cl, 0x74
mov edx, ebp
jne 0x42035c
mov cl, byte [eax + 1]
cmp cl, 0x72
je 0x420306
cmp cl, 0x74
je 0x42031e
cmp cl, 0x79
mov edx, ebp
jne 0x42035c
cmp byte [eax + 2], 0x70
mov edx, ebp
jne 0x42035c
cmp byte [eax + 3], 0x31
jmp 0x420312
cmp byte [eax + 1], 1
mov edx, ebp
jne 0x42035c
cmp byte [eax + 2], 0
mov edx, ebp
jne 0x42035c
cmp byte [eax + 3], 0
jmp 0x420312
cmp byte [eax + 1], 0x54
mov edx, ebp
jne 0x42035c
cmp byte [eax + 2], 0x54
mov edx, ebp
jne 0x42035c
cmp byte [eax + 3], 0x4f
jmp 0x420312
cmp byte [eax + 2], 0x75
mov edx, ebp
jne 0x42035c
cmp byte [eax + 3], 0x65
mov edx, ebp
jne 0x42035c
neg dword [esp + 0x40]
sbb edx, edx
jmp 0x42035c
cmp byte [eax + 2], 0x63
mov edx, ebp
jne 0x42035c
cmp byte [eax + 3], 0x66
mov edx, ebp
jne 0x42035c
mov ecx, dword [eax + 4]
bswap ecx
cmp ecx, 0x20000
je 0x420345
cmp ecx, 0x10000
mov edx, ebp
jne 0x42035c
mov ecx, dword [eax + 8]
mov edx, ebp
bswap ecx
cmp ecx, dword [esp + 0x40]
jle 0x42035c
mov ecx, dword [esp + 0x40]
mov edx, dword [eax + ecx*4 + 0xc]
bswap edx
mov dword [esp + 0x3c], esi
imul ebp, esi, 0x8c
mov esi, dword [esp + 0x38]
mov ecx, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x60], edx
mov dword [esi + ebp + 4], eax
xor eax, eax
mov dword [esi + ebp + 8], edx
mov dword [esi + ebp + 0x34], eax
mov dword [esi + ebp + 0x38], eax
mov dword [esi + ebp + 0x3c], eax
mov dword [esp], str.cmap
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esp + 0x40], eax
mov dword [esp], str.loca
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esi + ebp + 0x10], eax
mov dword [esp + 0x30], eax
mov dword [esp], str.head
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esi + ebp + 0x14], eax
mov dword [esp + 0xb0], eax
mov dword [esp], str.glyf
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esi + ebp + 0x18], eax
mov dword [esp + 0xd0], eax
mov dword [esp], str.hhea
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esi + ebp + 0x1c], eax
mov dword [esp + 0x90], eax
mov dword [esp], str.hmtx
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esi + ebp + 0x20], eax
mov dword [esp + 0x2c], eax
mov dword [esp], str.kern
call fcn.0041afc5
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esi + ebp + 0x24], eax
mov dword [esp], str.GPOS
call fcn.0041afc5
mov ecx, dword [esp + 0x40]
mov dword [esi + ebp + 0x28], eax
test ecx, ecx
je 0x422fcf
cmp dword [esp + 0xb0], 0
je 0x422fcf
cmp dword [esp + 0x90], 0
je 0x422fcf
cmp dword [esp + 0x2c], 0
je 0x422fcf
cmp dword [esp + 0xd0], 0
mov dword [esp + 0x28], ebp
je 0x4204b0
cmp dword [esp + 0x30], 0
jne 0x420850
jmp 0x422fcf
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
xor eax, eax
mov dword [esp + 0x1d0], 2
mov dword [esp], str.CFF
mov dword [esp + 0x1cc], eax
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x1c4], eax
call fcn.0041afc5
mov ebp, dword [esp + 0x38]
test eax, eax
je 0x422fcf
mov esi, dword [esp + 0x28]
add eax, dword [esp + 0x70]
xor ecx, ecx
lea edx, [ebp + esi + 0x34]
mov dword [ebp + esi + 0x68], ecx
mov dword [ebp + esi + 0x64], ecx
mov dword [ebp + esi + 0x70], ecx
mov dword [ebp + esi + 0x6c], ecx
mov dword [ebp + esi + 0x78], ecx
mov dword [ebp + esi + 0x74], ecx
mov dword [edx], eax
mov dword [edx + 4], ecx
mov dword [edx + 8], 0x20000000
movsd xmm0, qword [edx]
movsd qword [esp + 0x1d4], xmm0
mov eax, dword [edx + 8]
mov dword [esp + 0x1dc], eax
mov esi, dword [esp + 0x1d8]
lea edx, [esi + 2]
cmp eax, edx
cmovle edx, eax
cmp esi, 0xfffffffe
cmovl edx, eax
cmp edx, eax
mov dword [esp + 0x1d8], edx
jge 0x420570
mov ecx, dword [esp + 0x1d4]
lea esi, [edx + 1]
mov dword [esp + 0x1d8], esi
movzx ecx, byte [ecx + edx]
cmp eax, ecx
lea edx, [esp + 0x1d4]
cmovle ecx, eax
mov dword [esp + 0x1d8], ecx
lea ecx, [esp + 0x1a4]
call fcn.0041ba14
lea esi, [esp + 0x1a4]
lea edx, [esp + 0x1d4]
mov ecx, esi
call fcn.0041ba14
mov ecx, dword [esp + 0x1ac]
mov eax, dword [esp + 0x1a8]
mov edx, dword [esp + 0x1a4]
mov dword [esp + 8], 0
mov dword [esp + 4], ecx
lea ecx, [esp + 0x1b0]
mov dword [esp], eax
call fcn.0041cbfc
mov ecx, esi
lea edx, [esp + 0x1d4]
call fcn.0041ba14
mov ecx, esi
lea edx, [esp + 0x1d4]
call fcn.0041ba14
mov eax, dword [esp + 0x1ac]
mov ecx, dword [esp + 0x28]
lea esi, [esp + 0x1b0]
mov edx, 0x11
mov dword [ebp + ecx + 0x54], eax
lea eax, [esp + 0x1cc]
movsd xmm0, qword [esp + 0x1a4]
movsd qword [ebp + ecx + 0x4c], xmm0
mov dword [esp + 4], eax
xor eax, eax
mov ecx, esi
inc eax
mov dword [esp], eax
call fcn.0042468f
lea eax, [esp + 0x1d0]
mov ecx, esi
mov edx, 0x106
mov dword [esp + 4], eax
xor eax, eax
inc eax
mov dword [esp], eax
call fcn.0042468f
lea eax, [esp + 0x1c8]
mov ecx, esi
mov edx, 0x124
mov dword [esp + 4], eax
xor eax, eax
inc eax
mov dword [esp], eax
call fcn.0042468f
lea eax, [esp + 0x1c4]
mov ecx, esi
mov edx, 0x125
mov dword [esp + 4], eax
xor eax, eax
inc eax
mov dword [esp], eax
call fcn.0042468f
mov edx, dword [esp + 0x1d4]
mov eax, dword [esp + 0x1b0]
mov ecx, dword [esp + 0x1b4]
mov esi, dword [esp + 0x1dc]
mov dword [esp + 0xb0], edx
mov edx, dword [esp + 0x1d8]
mov dword [esp + 0x90], eax
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x1b8]
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x90]
mov dword [esp], edx
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x10], eax
mov dword [esp + 8], ecx
lea ecx, [esp + 0x1a4]
call fcn.0041ccee
mov eax, dword [esp + 0x1ac]
mov ecx, dword [esp + 0x28]
mov dword [ebp + ecx + 0x60], eax
movsd xmm0, qword [esp + 0x1a4]
movsd qword [ebp + ecx + 0x58], xmm0
cmp dword [esp + 0x1d0], 2
jne 0x422fcf
mov edx, dword [esp + 0x1cc]
test edx, edx
je 0x422fcf
mov eax, dword [esp + 0x1c8]
test eax, eax
je 0x420808
mov ecx, ebp
mov ebp, dword [esp + 0x1c4]
test ebp, ebp
je 0x422fcf
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x28]
lea eax, [ecx + eax + 0x64]
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x90], edx
cmp esi, eax
mov ecx, eax
cmovle ecx, esi
test eax, eax
lea eax, [esp + 0x1d4]
cmovs ecx, esi
mov edx, eax
mov dword [esp + 0x1d8], ecx
lea ecx, [esp + 0x1a4]
call fcn.0041ba14
mov eax, dword [esp + 0x1ac]
mov ecx, dword [esp + 0xb0]
mov dword [ecx + 8], eax
mov eax, 0
movsd xmm0, qword [esp + 0x1a4]
movsd qword [ecx], xmm0
mov esi, dword [esp + 0x1dc]
mov ecx, esi
sub ecx, ebp
mov edx, ecx
setl byte [esp + 0x2c]
or edx, ebp
sets dl
add ebp, dword [esp + 0x1d4]
or dl, byte [esp + 0x2c]
test dl, dl
mov edx, dword [esp + 0x90]
cmovne ecx, eax
mov eax, 0
cmovne ebp, eax
mov eax, dword [esp + 0xb0]
mov dword [eax + 0xc], ebp
mov ebp, dword [esp + 0x28]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], ecx
jmp 0x42080c
mov ebp, dword [esp + 0x28]
cmp esi, edx
mov eax, edx
lea ecx, [esp + 0x1a4]
cmovle eax, esi
test edx, edx
lea edx, [esp + 0x1d4]
cmovs eax, esi
mov dword [esp + 0x1d8], eax
call fcn.0041ba14
mov eax, dword [esp + 0x1ac]
mov ecx, dword [esp + 0x38]
mov dword [ecx + ebp + 0x48], eax
movsd xmm0, qword [esp + 0x1a4]
movsd qword [ecx + ebp + 0x40], xmm0
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x60]
mov dword [esp], str.maxp
mov ecx, esi
call fcn.0041afc5
test eax, eax
je 0x420876
movzx eax, word [esi + eax + 4]
shl eax, 0x10
bswap eax
jmp 0x42087b
mov eax, 0xffff
mov ecx, dword [esp + 0x38]
mov dword [ecx + ebp + 0xc], eax
mov eax, dword [esp + 0x40]
movzx eax, word [esi + eax + 2]
mov dword [ecx + ebp + 0x2c], 0
shl eax, 0x10
bswap eax
test eax, eax
je 0x422fcf
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x40]
lea edx, [edx + esi + 0xb]
lea ecx, [ecx + ebp + 0x14]
xor esi, esi
movzx ebp, word [edx - 7]
rol bp, 8
test bp, bp
je 0x4208de
cmp bp, 3
jne 0x4208ea
movzx ebp, word [edx - 5]
rol bp, 8
cmp bp, 0xa
je 0x4208de
cmp bp, 1
jne 0x4208ea
mov esi, dword [edx - 3]
bswap esi
add esi, dword [esp + 0x40]
mov dword [ecx + 0x18], esi
add edx, 8
dec eax
jne 0x4208b7
mov edx, dword [esp + 0x28]
test esi, esi
je 0x422fcf
mov eax, dword [ecx]
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0x3c]
mov ebp, 0xffffffff
movzx eax, word [ecx + eax + 0x32]
mov ecx, dword [esp + 0x38]
inc esi
shl eax, 0x10
bswap eax
mov dword [ecx + edx + 0x30], eax
mov ecx, dword [esp + 0x3f0]
cmp esi, dword [ecx + 0x48]
jl 0x420271
lea eax, [ebx + ebx*8]
lea esi, [eax + eax*2]
add esi, ebx
mov dword [esp], esi
call fcn.00418288
shl ebx, 4
mov dword [esp + 0x110], eax
mov dword [esp], ebx
call fcn.00418288
shl edi, 3
mov ebp, eax
lea eax, [edi + edi*2]
mov dword [esp + 0x40], eax
mov dword [esp], eax
call fcn.00418288
mov edi, eax
mov eax, dword [esp + 0x110]
mov dword [esp + 8], esi
xor esi, esi
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.0048b760
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp + 0x108], ebp
mov dword [esp], ebp
call fcn.0048b760
mov eax, dword [esp + 0x40]
mov dword [esp + 4], esi
mov dword [esp + 0x128], edi
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.0048b760
mov ecx, dword [esp + 0x3f0]
cmp dword [ecx + 0x48], esi
jle 0x420f6a
mov eax, dword [esp + 0x108]
xor ebx, ebx
xor edi, edi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x100], 0
inc ebx
mov dword [esp + 0x8c], ebx
add eax, 6
mov dword [esp + 0xfc], eax
xor eax, eax
mov ecx, dword [ecx + 0x50]
imul edx, edi, 0x6c
mov ebp, 0
mov dword [esp + 0xc4], edi
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], edx
mov edx, dword [ecx + edx + 0x30]
mov dword [esp + 0x70], ecx
movzx esi, word [edx]
test si, si
je 0x420a54
xor ebp, ebp
mov dword [esp + 0x5c], 0
movzx edi, word [edx + ebp*4 + 2]
test edi, edi
je 0x420a54
mov ecx, ebp
mov ebp, dword [esp + 0x5c]
movzx esi, si
sub ebp, esi
movzx esi, word [edx + ecx*4 + 4]
lea ebp, [ebp + edi + 1]
mov dword [esp + 0x5c], ebp
mov ebp, ecx
inc ebp
test si, si
jne 0x420a2b
mov dword [esp + 0xec], eax
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x128]
mov edi, dword [esp + 0x38]
mov dword [esp + 0xcc], ebp
lea edx, [eax + edx*8]
mov eax, dword [esp + 0xc4]
imul ecx, eax, 0x8c
test ebp, ebp
lea eax, [edi + ecx + 0x84]
mov dword [edi + ecx + 0x84], edx
mov dword [edi + ecx + 0x88], ebp
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x2c], eax
je 0x420b49
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xa4], ebx
xor ebx, ebx
lea esi, [eax + ecx + 0x30]
lea ecx, [ebp - 1]
mov ebp, 4
mov dword [esp + 0x40], ecx
mov ecx, dword [esi - 0x20]
mov eax, dword [esi]
mov edi, edx
mov dword [edx + ebp*4 - 0x10], ecx
movzx ecx, word [eax + ebx*4]
mov dword [edx + ebp*4 - 0xc], ecx
movzx ecx, word [eax + ebx*4 + 2]
movzx eax, word [eax + ebx*4]
sub ecx, eax
lea eax, [ecx + 1]
mov dword [edx + ebp*4 - 4], eax
mov edx, dword [esp + 0x3c]
lea eax, [edx + edx*8]
lea eax, [eax + eax*2]
add eax, edx
lea edx, [ecx + edx + 1]
add eax, dword [esp + 0x110]
cmp dword [esp + 0x40], ebx
mov dword [esp + 0x3c], edx
mov dword [edi + ebp*4], eax
je 0x420b1e
mov eax, dword [esp + 0x2c]
inc ebx
add ebp, 6
mov edx, dword [eax]
jmp 0x420ac9
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0xa4]
mov ebp, dword [esp + 0xcc]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x88], ecx
mov dword [esp + 0xc0], eax
jmp 0x420b5b
mov dword [esp + 0xc0], edx
mov dword [esp + 0x88], 0
mov ecx, dword [esp + 0x100]
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0xb0]
shl ecx, 4
lea esi, [eax + ecx]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x60]
mov dword [edi + edx + 0x7c], esi
mov dword [edi + edx + 0x80], eax
mov eax, dword [esp + 0x70]
mov esi, dword [eax + ecx + 0x14]
mov eax, dword [eax + ecx + 0x18]
cmp esi, 9
cmovb ebx, esi
mov esi, edx
mov edx, dword [esp + 0x8c]
cmp eax, 9
lea ecx, [edi + esi + 0x7c]
cmovb edx, eax
cmp dword [esp + 0x88], 0
mov dword [esp + 0x8c], edx
jle 0x420f29
movq xmm1, qword [0x4b24d8]
mov eax, edx
mov eax, dword [esp + 0xf4]
mov dword [esp + 0xd0], ecx
lea ecx, [edi + esi]
movd xmm0, edx
mov edx, dword [esp + 0xc0]
xor ebp, ebp
mov dword [esp + 0xa4], ebx
mov dword [esp + 0x40], ecx
lea ecx, [edi + esi + 4]
mov edi, dword [esp + 0x28]
mov dword [esp + 0xa8], ecx
por xmm0, xmm1
lea ecx, [ebx + eax]
subsd xmm0, xmm1
mov dword [esp + 0xb0], ecx
mov ecx, dword [esp + 0x8c]
add edi, dword [esp + 0xfc]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0xc8], xmm0
movd xmm0, ebx
por xmm0, xmm1
subsd xmm0, xmm1
add eax, ecx
xor ecx, ecx
mov dword [esp + 0x28], edi
cvtsd2ss xmm0, xmm0
mov dword [esp + 0x90], eax
movss dword [esp + 0x84], xmm0
lea eax, [ecx + ecx*2]
movss xmm1, dword [edx + eax*8]
ucomiss xmm1, dword [0x4b23b4]
mov dword [esp + 0x30], ecx
jbe 0x420cb9
mov edx, dword [esp + 0xa8]
mov ecx, dword [edx]
mov edx, dword [edx + 0x18]
movzx esi, byte [ecx + edx + 4]
movzx edi, byte [ecx + edx + 5]
shl esi, 8
movsx esi, si
or esi, edi
movzx edi, byte [ecx + edx + 6]
movzx ecx, byte [ecx + edx + 7]
shl edi, 8
movsx edx, di
mov edi, dword [esp + 0x28]
or edx, ecx
sub esi, edx
mov edx, dword [esp + 0xc0]
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
jmp 0x420ce6
mov edx, dword [esp + 0xa8]
xorps xmm1, xmmword [0x4b2430]
mov ecx, dword [edx]
mov edx, dword [edx + 0x10]
movzx ecx, word [ecx + edx + 0x12]
mov edx, dword [esp + 0xc0]
rol cx, 8
movzx ecx, cx
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
divss xmm1, xmm0
mov ecx, dword [esp + 0x8c]
mov byte [edx + eax*8 + 0x14], bl
mov byte [edx + eax*8 + 0x15], cl
cmp dword [edx + eax*8 + 0xc], 0
jle 0x420dfb
movaps xmm0, xmm1
mulss xmm1, dword [esp + 0x84]
mov dword [esp + 0xac], ebp
shl ebp, 4
lea esi, [edx + eax*8 + 0xc]
xor ebx, ebx
mulss xmm0, dword [esp + 0xc8]
add ebp, edi
movups xmmword [esp + 0x70], xmm1
movss dword [esp + 0x60], xmm0
mov eax, dword [esi - 4]
test eax, eax
je 0x420d42
mov edx, dword [eax + ebx*4]
jmp 0x420d47
mov edx, dword [esi - 8]
add edx, ebx
mov edi, dword [esp + 0x40]
mov ecx, edi
call fcn.0041ee62
lea ecx, [esp + 0x1d0]
movups xmm0, xmmword [esp + 0x70]
movss xmm1, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0x1a4]
mov dword [esp + 8], ecx
lea ecx, [esp + 0x1b0]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x1d4]
mov dword [esp], ecx
mov ecx, edi
call fcn.0042421d
mov ecx, dword [esp + 0x1a4]
mov eax, dword [esp + 0x1d4]
inc ebx
mov edi, dword [esp + 0x28]
add ecx, dword [esp + 0xb0]
not eax
add eax, ecx
mov word [ebp - 2], ax
mov ecx, dword [esp + 0x1d0]
mov eax, dword [esp + 0x1b0]
add ecx, dword [esp + 0x90]
not eax
add eax, ecx
mov word [ebp], ax
add ebp, 0x10
cmp ebx, dword [esi]
jl 0x420d36
mov ebp, dword [esp + 0xac]
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0xc0]
add ebp, ebx
mov ebx, dword [esp + 0xa4]
jmp 0x420e02
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x30]
inc ecx
cmp ecx, eax
jne 0x420c5e
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0xd0]
mov dword [esp + 0xac], ebp
cmp dword [eax + 4], 0
jle 0x420e9f
mov eax, dword [esp + 0x2c]
xor ecx, ecx
xor edx, edx
mov ebp, dword [eax]
lea ebx, [ecx + ecx*2]
cmp dword [ebp + ebx*8 + 0xc], 0
jle 0x420e95
mov esi, edx
xor edi, edi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x60], edx
shl esi, 4
mov edx, dword [ebp + ebx*8 + 4]
mov ecx, dword [esp + 0x40]
add edx, edi
call fcn.0041ee62
test eax, eax
jne 0x420e7a
mov edx, dword [esp + 0xd0]
xor ecx, ecx
mov eax, dword [edx]
mov word [eax + esi + 6], cx
mov eax, dword [edx]
mov word [eax + esi + 4], cx
mov ecx, dword [esp + 0x2c]
mov ebp, dword [ecx]
inc edi
add esi, 0x10
cmp edi, dword [ebp + ebx*8 + 0xc]
jl 0x420e4a
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0xd0]
mov ecx, dword [esp + 0x70]
add edx, edi
mov eax, dword [esp + 0x2c]
inc ecx
cmp ecx, dword [eax + 4]
jl 0x420e31
mov edx, dword [esi]
mov edi, dword [esp + 0xac]
mov ecx, dword [esp + 0xe4]
mov dword [esp], edi
call fcn.0041b024
test edi, edi
mov ebx, dword [esp + 0xa4]
mov edi, dword [esp + 0xc4]
mov ebp, dword [esp + 0xcc]
jle 0x420f45
mov eax, 6
mov ecx, dword [esi]
cmp word [ecx + eax - 2], 0
jne 0x420ef0
cmp word [ecx + eax], 0
jne 0x420ef0
mov dword [ecx + eax + 6], 0
mov ecx, dword [esi]
cmp dword [ecx + eax + 6], 0
je 0x420f1b
movzx edx, word [ecx + eax + 4]
movzx ecx, word [ecx + eax]
mov esi, dword [esp + 0x3f0]
add ecx, edx
mov edx, dword [esi + 0x1c]
cmp edx, ecx
cmovge ecx, edx
mov dword [esi + 0x1c], ecx
mov esi, dword [esp + 0xd0]
add eax, 0x10
dec dword [esp + 0xac]
jne 0x420ed5
jmp 0x420f45
mov edx, dword [ecx]
mov ecx, dword [esp + 0xe4]
mov dword [esp], 0
call fcn.0041b024
mov edi, dword [esp + 0xc4]
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0xec]
inc edi
add dword [esp + 0x100], ecx
mov ecx, dword [esp + 0x3f0]
add eax, ebp
cmp edi, dword [ecx + 0x48]
jl 0x4209f3
test byte [ecx], 1
mov eax, dword [ecx + 0x1c]
jne 0x420f9c
dec eax
mov ecx, eax
sar ecx, 1
or ecx, eax
mov eax, ecx
sar eax, 2
or eax, ecx
mov ecx, eax
sar ecx, 4
or ecx, eax
mov edx, ecx
sar edx, 8
or edx, ecx
mov ecx, dword [esp + 0x3f0]
mov eax, edx
sar eax, 0x10
or eax, edx
inc eax
movss xmm2, dword [0x4b23b0]
mov edx, dword [esp + 0x3f0]
mov esi, dword [esp + 0x3f0]
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x3f0]
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
movaps xmm1, xmm2
mov ecx, dword [ecx + 0x18]
divss xmm1, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
imul eax, ecx
divss xmm2, xmm0
movss dword [edx + 0x20], xmm2
movss dword [esi + 0x24], xmm1
mov dword [esp], eax
call fcn.00418288
mov ecx, dword [esp + 0x3f0]
mov edx, dword [esp + 0x3f0]
mov dword [ecx + 0x10], eax
mov ecx, dword [esp + 0x3f0]
mov ecx, dword [ecx + 0x1c]
imul ecx, dword [edx + 0x18]
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], ecx
call fcn.0048b760
mov eax, dword [esp + 0x3f0]
cmp dword [eax + 0x48], 0
jle 0x422baa
mov ecx, dword [eax + 0x10]
xorps xmm3, xmm3
mov dword [esp + 0xf0], ecx
xor ecx, ecx
mov eax, dword [eax + 0x50]
mov dword [esp + 0x12c], ecx
imul ecx, ecx, 0x8c
mov dword [esp + 0x10c], ecx
mov dword [esp + 0x150], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + ecx + 0x88]
test ecx, ecx
mov dword [esp + 0x158], ecx
jle 0x422a65
mov ecx, dword [esp + 0x10c]
xor ebx, ebx
mov edi, dword [eax + ecx + 0x7c]
mov esi, dword [eax + ecx + 0x84]
lea edx, [eax + ecx]
lea eax, [eax + ecx + 4]
xor ecx, ecx
mov dword [esp + 0x148], edx
mov dword [esp + 0x114], eax
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], esi
mov edx, dword [esp + 0xe8]
lea eax, [ecx + ecx*2]
mov dword [esp + 0x15c], ecx
movss xmm0, dword [edx + eax*8]
ucomiss xmm0, xmm3
jbe 0x421112
mov edx, dword [esp + 0x114]
movaps xmm1, xmm0
mov ecx, dword [edx]
mov edx, dword [edx + 0x18]
movzx esi, byte [ecx + edx + 4]
movzx edi, byte [ecx + edx + 5]
shl esi, 8
movsx esi, si
or esi, edi
movzx edi, byte [ecx + edx + 6]
movzx ecx, byte [ecx + edx + 7]
shl edi, 8
movsx edx, di
or edx, ecx
mov ecx, dword [esp + 0xe8]
sub esi, edx
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
jmp 0x421142
mov edx, dword [esp + 0x114]
xorps xmm0, xmmword [0x4b2430]
mov ecx, dword [edx]
mov edx, dword [edx + 0x10]
movaps xmm1, xmm0
movzx ecx, word [ecx + edx + 0x12]
rol cx, 8
movzx ecx, cx
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
mov ecx, dword [esp + 0xe8]
divss xmm1, xmm0
movzx edx, byte [ecx + eax*8 + 0x14]
movzx esi, byte [ecx + eax*8 + 0x15]
test edx, edx
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
mov dword [esp + 0xa8], esi
movaps xmm0, xmm1
xorps xmm1, xmm1
movss dword [esp + 0x138], xmm1
xorps xmm1, xmm1
movups xmmword [esp + 0x190], xmm0
movss dword [esp + 0x134], xmm1
je 0x4211b4
xor ecx, ecx
movaps xmm0, xmm2
inc ecx
addss xmm0, xmm2
sub ecx, edx
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
mov ecx, dword [esp + 0xe8]
divss xmm1, xmm0
movups xmm0, xmmword [esp + 0x190]
movss dword [esp + 0x134], xmm1
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0xa8]
xorps xmm4, xmm4
cvtsi2ss xmm4, edx
test dl, dl
je 0x4211f9
xor ecx, ecx
movaps xmm0, xmm4
inc ecx
addss xmm0, xmm4
sub ecx, edx
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
mov ecx, dword [esp + 0xe8]
divss xmm1, xmm0
movups xmm0, xmmword [esp + 0x190]
movss dword [esp + 0x138], xmm1
mov edx, ecx
mov ecx, dword [ecx + eax*8 + 0xc]
test ecx, ecx
jle 0x422a4c
movaps xmm1, xmm0
movss xmm0, dword [0x4b23b0]
lea eax, [edx + eax*8 + 0xc]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x14c], eax
xor eax, eax
inc eax
mov esi, eax
sub eax, dword [esp + 0xa8]
movaps xmm5, xmm0
sub esi, edx
divss xmm5, xmm2
mulss xmm2, xmm1
mov dword [esp + 0x130], esi
movss dword [esp + 0x124], xmm2
mov dword [esp + 0x164], eax
lea eax, [edx*4]
mov edx, 4
sub edx, eax
mov dword [esp + 0x154], edx
xor edx, edx
movss dword [esp + 0x178], xmm5
movaps xmm5, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
divss xmm5, xmm4
movss dword [esp + 0x88], xmm0
minss xmm0, xmm2
movss xmm2, dword [0x4b73a4]
divss xmm2, xmm0
movss dword [esp + 0x174], xmm5
mulss xmm2, xmm2
movss dword [esp + 0xc0], xmm2
mov eax, dword [esp + 0xec]
mov esi, ebx
shl esi, 4
mov dword [esp + 0xfc], esi
cmp dword [eax + esi + 0xc], 0
je 0x422a42
mov ecx, dword [esp + 0x14c]
mov dword [esp + 0x18c], ebx
mov dword [esp + 0x188], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0x184], eax
mov eax, dword [ecx - 4]
test eax, eax
je 0x4212f7
mov edx, dword [eax + edx*4]
jmp 0x4212fe
mov eax, edx
mov edx, dword [ecx - 8]
add edx, eax
mov edi, dword [esp + 0x148]
mov ecx, edi
call fcn.0041ee62
mov ebp, eax
mov eax, dword [esp + 0xf4]
mov esi, dword [esp + 0xec]
mov ebx, dword [esp + 0xfc]
add word [esi + ebx + 8], ax
add word [esi + ebx + 0xa], ax
sub word [esi + ebx + 4], ax
sub word [esi + ebx + 6], ax
mov edx, dword [esp + 0x114]
movss xmm0, dword [esp + 0x124]
movss xmm1, dword [esp + 0x88]
mov eax, dword [edx]
mov ecx, dword [edx + 0x18]
movzx ecx, word [eax + ecx + 0x22]
add eax, dword [edx + 0x1c]
lea edx, [esp + 0x1bc]
shl ecx, 0x10
bswap ecx
cmp ecx, ebp
lea ecx, [eax + ecx*4 - 4]
lea eax, [eax + ebp*4]
cmovle eax, ecx
lea ecx, [esp + 0x1c0]
movzx eax, word [eax]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
lea edx, [esp + 0x1c4]
lea ecx, [esp + 0x1c8]
mov dword [esp + 4], edx
mov dword [esp], ecx
mov ecx, edi
mov edx, ebp
mov word [esp + 0xa4], ax
call fcn.0042421d
movzx eax, word [esi + ebx + 4]
movzx edi, word [esi + ebx + 6]
mov edx, ebp
mov dword [esp + 0x3c], eax
sub eax, dword [esp + 0x5c]
sub edi, dword [esp + 0xa8]
mov dword [esp + 0xc4], eax
inc eax
mov dword [esp + 0xd0], eax
movzx eax, word [esi + ebx + 8]
movzx esi, word [esi + ebx + 0xa]
mov ebx, dword [esp + 0x148]
sete byte [esp + 0x40]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x1cc]
mov ecx, ebx
mov dword [esp], eax
call fcn.0041bb01
movss xmm0, dword [esp + 0x124]
movss xmm1, dword [esp + 0x88]
lea edx, [esp + 0x1d0]
lea ecx, [esp + 0x1a4]
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 4], edx
mov dword [esp], ecx
mov ecx, ebx
mov edx, ebp
mov dword [esp + 0xc], eax
mov dword [esp + 8], eax
call fcn.0042421d
mov dword [esp + 0x144], edi
inc edi
je 0x4223a6
cmp byte [esp + 0x40], 0
jne 0x4223a6
mov eax, dword [esp + 0x1d0]
mov edx, dword [esp + 0x1a4]
mov ecx, dword [esp + 0x1cc]
cmp dword [esp + 0x60], 0
mov dword [esp + 0xac], edi
mov dword [esp + 0x1d4], 0
mov dword [esp + 0x11c], eax
mov dword [esp + 0xc8], edx
mov dword [esp + 0x28], ecx
jle 0x4223a6
mov eax, dword [esp + 0x70]
imul esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x60]
xor edx, edx
add eax, dword [esp + 0xf0]
add esi, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x120], esi
add eax, 0xc
mov bl, byte [eax]
mov esi, edx
xor edx, edx
cmp bl, 1
sete dl
add eax, 0xe
add edx, esi
dec ecx
jne 0x4214c3
test edx, edx
mov byte [esp + 0x40], bl
mov dword [esp + 0xb0], esi
je 0x4223a6
lea eax, [edx*4]
mov edi, edx
mov dword [esp], eax
call fcn.00418288
test eax, eax
je 0x4223a6
mov dl, byte [esp + 0x40]
mov esi, eax
mov dword [esp + 0x90], edi
mov cl, 1
xor eax, eax
xor edi, edi
mov dword [esp + 0x2c], 0
mov dword [esp + 0x70], ecx
mov dword [esp + 0x8c], esi
test al, 1
je 0x42154f
mov eax, dword [esp + 0x1d4]
shl eax, 3
mov dword [esp], eax
call fcn.00418288
mov dl, byte [esp + 0x40]
test eax, eax
mov dword [esp + 0x2c], eax
je 0x422392
mov esi, dword [esp + 0x60]
mov ebp, dword [esp + 0x28]
xor ebx, ebx
xorps xmm1, xmm1
xorps xmm0, xmm0
mov dword [esp + 0x1d4], 0
dec ebx
mov al, byte [ebp + 0xc]
dec al
cmp al, 3
ja case.default.0x42157b
movzx eax, al
jmp dword [eax*4 + 0x4b7470]
test ebx, ebx
js 0x421599
mov eax, dword [esp + 0x1d4]
mov ecx, dword [esp + 0x8c]
sub eax, edi
mov dword [ecx + ebx*4], eax
movsx ecx, word [ebp]
mov edi, dword [esp + 0x1d4]
inc ebx
cmp dword [esp + 0x2c], 0
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
movsx ecx, word [ebp + 2]
lea eax, [edi + 1]
mov dword [esp + 0x1d4], eax
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
je case.default.0x42157b
mov eax, dword [esp + 0x2c]
movss dword [eax + edi*8], xmm0
movss dword [eax + edi*8 + 4], xmm1
jmp case.default.0x42157b
movsx edx, word [ebp]
mov eax, dword [esp + 0x1d4]
cmp dword [esp + 0x2c], 0
xorps xmm0, xmm0
cvtsi2ss xmm0, edx
movsx edx, word [ebp + 2]
lea ecx, [eax + 1]
mov dword [esp + 0x1d4], ecx
xorps xmm1, xmm1
cvtsi2ss xmm1, edx
je 0x42161d
mov ecx, dword [esp + 0x2c]
movss dword [ecx + eax*8], xmm0
movss dword [ecx + eax*8 + 4], xmm1
mov dl, byte [esp + 0x40]
jmp case.default.0x42157b
movsx ecx, word [ebp]
movsx eax, word [ebp + 2]
movsx edx, word [ebp + 6]
movss xmm6, dword [esp + 0xc0]
xorps xmm4, xmm4
cvtsi2ss xmm4, ecx
movsx ecx, word [ebp + 4]
xorps xmm5, xmm5
cvtsi2ss xmm5, edx
xorps xmm3, xmm3
cvtsi2ss xmm3, eax
lea edx, [esp + 0x1d4]
movss dword [esp + 0xc], xmm6
mov dword [esp + 0x10], 0
movss dword [esp + 8], xmm3
movss dword [esp + 4], xmm4
movss dword [esp], xmm5
xorps xmm2, xmm2
cvtsi2ss xmm2, ecx
mov ecx, dword [esp + 0x2c]
call fcn.0041a750
jmp 0x421715
movsx ecx, word [ebp]
movsx eax, word [ebp + 2]
movsx edx, word [ebp + 0xa]
xorps xmm4, xmm4
cvtsi2ss xmm4, ecx
movsx ecx, word [ebp + 8]
xorps xmm5, xmm5
cvtsi2ss xmm5, edx
movsx edx, word [ebp + 6]
xorps xmm3, xmm3
cvtsi2ss xmm3, eax
xorps xmm6, xmm6
cvtsi2ss xmm6, ecx
movsx ecx, word [ebp + 4]
movss dword [esp + 0x10], xmm3
movss xmm3, dword [esp + 0xc0]
xorps xmm7, xmm7
cvtsi2ss xmm7, edx
lea edx, [esp + 0x1d4]
movss dword [esp + 0xc], xmm4
movss dword [esp + 8], xmm5
mov dword [esp + 0x18], 0
movss dword [esp + 4], xmm6
movss dword [esp], xmm7
xorps xmm2, xmm2
cvtsi2ss xmm2, ecx
mov ecx, dword [esp + 0x2c]
movss dword [esp + 0x14], xmm3
call fcn.0041ab3f
movsx eax, word [ebp]
movsx ecx, word [ebp + 2]
mov dl, byte [esp + 0x40]
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
add ebp, 0xe
dec esi
jne 0x42156b
mov eax, dword [esp + 0x1d4]
mov esi, dword [esp + 0x8c]
sub eax, edi
test byte [esp + 0x70], 1
mov dword [esp + 0x70], 0
mov dword [esi + ebx*4], eax
mov al, 1
jne 0x421529
cmp dword [esp + 0x2c], 0
je 0x4223a6
xor eax, eax
cmp dl, 1
mov edx, dword [esp + 0xb0]
sete al
xor ecx, ecx
add edx, eax
xor eax, eax
add eax, dword [esi + ecx*4]
inc ecx
cmp edx, ecx
jne 0x421781
lea eax, [eax + eax*4]
lea eax, [eax*4 + 0x14]
mov dword [esp], eax
call fcn.00418288
test eax, eax
je 0x422381
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x2c]
movss xmm3, dword [esp + 0x124]
movss xmm1, dword [esp + 0x88]
xor ebx, ebx
xor edx, edx
xorps xmm2, xmm2
add eax, 4
mov dword [esp + 0x30], eax
xor eax, eax
mov ebp, dword [esi + ebx*4]
mov dword [esp + 0x28], edx
test ebp, ebp
mov dword [esp + 0xb0], ebp
jle 0x4218d9
mov ecx, eax
mov eax, dword [esp + 0x2c]
lea esi, [ebp - 1]
mov dword [esp + 0x60], ebx
lea edi, [eax + edx*8]
mov eax, ecx
mov ecx, dword [esp + 0x30]
lea ecx, [ecx + edx*8]
xor edx, edx
mov dword [esp + 0x40], ecx
mov ecx, edx
movss xmm0, dword [edi + esi*8 + 4]
mov edx, dword [esp + 0x40]
ucomiss xmm0, dword [edx + ecx*8]
jne 0x42181d
jnp 0x4218cc
mov dword [esp + 0x70], eax
lea ebp, [eax + eax*4]
mov eax, dword [esp + 0x84]
mov ebx, dword [esp + 0x40]
lea edx, [ecx + ecx]
mov dword [eax + ebp*4 + 0x10], 0
movss xmm0, dword [edi + esi*8 + 4]
ucomiss xmm0, dword [ebx + edx*4]
jbe 0x421856
lea edx, [eax + ebp*4 + 0x10]
mov dword [edx], 1
mov edx, esi
mov esi, ecx
jmp 0x421858
mov edx, ecx
movss xmm0, dword [edi + edx*8]
mov ebx, dword [esp + 0x60]
mulss xmm0, xmm3
addss xmm0, xmm2
movss dword [eax + ebp*4], xmm0
movss xmm0, dword [edi + edx*8 + 4]
mov edx, dword [esp + 0x8c]
mulss xmm0, xmm1
xorps xmm1, xmm1
subss xmm1, xmm0
movss dword [eax + ebp*4 + 4], xmm1
xorps xmm1, xmm1
movss xmm0, dword [edi + esi*8]
mulss xmm0, xmm3
addss xmm0, xmm2
movss dword [eax + ebp*4 + 8], xmm0
movss xmm0, dword [edi + esi*8 + 4]
mulss xmm0, dword [esp + 0x88]
subss xmm1, xmm0
movss dword [eax + ebp*4 + 0xc], xmm1
mov eax, dword [esp + 0x70]
movss xmm1, dword [esp + 0x88]
mov ebp, dword [edx + ebx*4]
inc eax
lea edx, [ecx + 1]
mov esi, ecx
cmp edx, ebp
jl 0x421805
mov edx, dword [esp + 0x28]
inc ebx
mov esi, dword [esp + 0x8c]
add edx, dword [esp + 0xb0]
cmp ebx, dword [esp + 0x90]
jne 0x4217d0
mov ecx, dword [esp + 0x84]
mov edx, eax
mov esi, eax
call fcn.0041e4bc
mov ebp, esi
cmp esi, 2
jl 0x4219bd
mov eax, dword [esp + 0x84]
xor ecx, ecx
inc ecx
mov ebx, dword [esp + 0x84]
lea esi, [ecx + ecx*4]
mov edi, dword [ebx + esi*4 + 0x10]
mov edx, dword [ebx + esi*4]
movss xmm0, dword [ebx + esi*4 + 4]
mov dword [esp + 0x1dc], edi
mov edi, eax
movsd xmm1, qword [ebx + esi*4 + 8]
mov esi, ecx
movsd qword [esp + 0x1d4], xmm1
movss xmm1, dword [edi + 4]
ucomiss xmm1, xmm0
jbe 0x421980
mov ebx, dword [edi + 0x10]
dec esi
mov dword [edi + 0x24], ebx
lea ebx, [esi + 1]
movsd xmm1, qword [edi]
movsd xmm2, qword [edi + 8]
movsd qword [edi + 0x1c], xmm2
movsd qword [edi + 0x14], xmm1
add edi, 0xffffffec
cmp ebx, 1
jg 0x42194f
xor esi, esi
cmp ecx, esi
je 0x4219b1
mov edi, dword [esp + 0x84]
lea esi, [esi + esi*4]
mov dword [edi + esi*4], edx
movss dword [edi + esi*4 + 4], xmm0
movsd xmm0, qword [esp + 0x1d4]
movsd qword [edi + esi*4 + 8], xmm0
mov edx, dword [esp + 0x1dc]
mov dword [edi + esi*4 + 0x10], edx
inc ecx
add eax, 0x14
cmp ecx, ebp
jne 0x42191e
cmp dword [esp + 0xc4], 0x40
lea esi, [esp + 0x1d4]
mov dword [esp + 0x1b0], 0
jl 0x4219f1
mov eax, dword [esp + 0xd0]
lea eax, [eax*8 + 4]
mov dword [esp], eax
call fcn.00418288
mov esi, eax
mov ecx, dword [esp + 0x11c]
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0x84]
add eax, ecx
cmp dword [esp + 0x144], 0
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
lea eax, [ebp + ebp*4]
addss xmm0, dword [0x4b23b0]
movss dword [edx + eax*4 + 4], xmm0
js 0x422358
mov edx, dword [esp + 0xd0]
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 0xc8]
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x118], 0
mov dword [esp + 0xf8], 0
lea eax, [esi + edx*4]
movss dword [esp + 0x100], xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, edx
mov dword [esp + 0xcc], eax
lea eax, [eax + 4]
movss dword [esp + 0xc8], xmm0
mov dword [esp + 0x13c], eax
lea eax, [edx*4]
mov dword [esp + 0x170], eax
lea eax, [edx*4 + 4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x16c], eax
mov eax, dword [esp + 0x130]
lea eax, [eax + edx]
mov dword [esp + 0xac], eax
lea eax, [esi + 4]
mov dword [esp + 0x160], eax
mov eax, dword [esp + 0x154]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x84]
mov dword [esp + 0x168], edx
mov dword [esp + 0x140], eax
xor eax, eax
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
mov dword [esp + 0x180], eax
mov eax, dword [esp + 0x170]
xor ebx, ebx
mov dword [esp + 0x11c], ecx
mov dword [esp], esi
movss dword [esp + 0x30], xmm0
addss xmm0, dword [0x4b23b0]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
movss dword [esp + 0x90], xmm0
call fcn.0048b760
mov eax, dword [esp + 0x16c]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0xcc]
mov dword [esp], eax
call fcn.0048b760
test edi, edi
je 0x421b8b
mov ebx, dword [esp + 0xf8]
mov edx, dword [esp + 0x118]
movss xmm6, dword [esp + 0x30]
lea eax, [esp + 0x1b0]
xorps xmm7, xmm7
ucomiss xmm6, dword [edi + 0x18]
jae 0x421b74
mov eax, edi
jmp 0x421b83
mov ecx, dword [edi]
mov dword [eax], ecx
mov dword [edi + 0x10], 0
mov dword [edi], edx
mov edx, edi
mov edi, dword [eax]
test edi, edi
jne 0x421b6a
jmp 0x421ba2
mov ebx, dword [esp + 0xf8]
mov edx, dword [esp + 0x118]
movss xmm6, dword [esp + 0x30]
xorps xmm7, xmm7
mov edi, dword [esp + 0x140]
movss xmm0, dword [edi + 4]
movss xmm1, dword [esp + 0x90]
ucomiss xmm1, xmm0
jb 0x421cca
ucomiss xmm0, dword [edi + 0xc]
jne 0x421bcc
jnp 0x421ca9
test edx, edx
je 0x421bd6
mov eax, edx
mov edx, dword [edx]
jmp 0x421c12
test ebp, ebp
je 0x421bdd
dec ebp
jmp 0x421c03
mov dword [esp], 0xdac4
call fcn.00418288
test eax, eax
je 0x421cb6
movss xmm6, dword [esp + 0x30]
mov dword [eax], ebx
mov ebp, 0x7cf
mov ebx, eax
xorps xmm7, xmm7
lea eax, [ebp + ebp*8]
xor edx, edx
lea eax, [eax + eax*2]
add eax, ebp
lea eax, [ebx + eax + 4]
test eax, eax
je 0x421ca9
movss xmm0, dword [edi + 8]
movss xmm1, dword [edi + 0xc]
xor ecx, ecx
subss xmm0, dword [edi]
subss xmm1, dword [edi + 4]
divss xmm0, xmm1
movss xmm1, dword [0x4b23b0]
divss xmm1, xmm0
movaps xmm2, xmm0
movss dword [eax + 8], xmm0
cmpneqss xmm2, xmm7
andps xmm2, xmm1
movaps xmm1, xmm6
movss dword [eax + 0xc], xmm2
subss xmm1, dword [edi + 4]
mulss xmm1, xmm0
addss xmm1, dword [edi]
subss xmm1, dword [esp + 0x100]
movss dword [eax + 4], xmm1
cmp dword [edi + 0x10], 0
sete cl
movss xmm0, dword [ecx*4 + 0x4b2440]
movss dword [eax + 0x10], xmm0
mov ecx, dword [edi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [edi + 0xc]
mov dword [eax + 0x18], ecx
mov dword [eax], 0
mov ecx, dword [esp + 0x1b0]
mov dword [eax], ecx
mov dword [esp + 0x1b0], eax
movss xmm0, dword [edi + 0x18]
add edi, 0x14
jmp 0x421bae
movss xmm6, dword [esp + 0x30]
xor edx, edx
xor ebp, ebp
xor eax, eax
xorps xmm7, xmm7
jmp 0x421c12
mov dword [esp + 0xf8], ebx
mov ebx, dword [esp + 0x1b0]
mov dword [esp + 0x118], edx
mov dword [esp + 0x17c], ebp
mov dword [esp + 0x140], edi
test ebx, ebx
je 0x422270
movss xmm2, dword [ebx + 8]
movss xmm4, dword [ebx + 4]
ucomiss xmm2, xmm7
jne 0x421d4a
jp 0x421d4a
movss xmm0, dword [esp + 0xc8]
ucomiss xmm0, xmm4
jbe 0x4220fb
ucomiss xmm4, xmm7
jae 0x422090
movss xmm0, dword [esp + 0x90]
mov ecx, dword [esp + 0xcc]
xor edx, edx
movaps xmm1, xmm6
movaps xmm2, xmm4
mov dword [esp], ebx
movss dword [esp + 4], xmm0
movaps xmm0, xmm4
jmp 0x4220ed
movss xmm1, dword [ebx + 0x14]
movaps xmm0, xmm2
movaps xmm5, xmm6
movss dword [esp + 0x3c], xmm2
movups xmmword [esp + 0xd0], xmm4
addss xmm0, xmm4
movups xmmword [esp + 0x60], xmm0
movaps xmm0, xmm1
cmpltss xmm5, xmm1
subss xmm0, xmm6
mulss xmm0, xmm2
addss xmm0, xmm4
andps xmm0, xmm5
andnps xmm5, xmm4
orps xmm5, xmm0
ucomiss xmm5, xmm7
jb 0x421e69
movss xmm0, dword [ebx + 0x18]
movaps xmm2, xmm0
movaps xmm3, xmm0
subss xmm2, xmm6
cmpltss xmm3, dword [esp + 0x90]
mulss xmm2, dword [esp + 0x3c]
addss xmm2, xmm4
movaps xmm4, xmm3
andps xmm3, xmm2
movups xmm2, xmmword [esp + 0x60]
andnps xmm4, xmm2
orps xmm3, xmm4
movups xmm4, xmmword [esp + 0xd0]
ucomiss xmm3, xmm7
jb 0x421e69
movss xmm2, dword [esp + 0xc8]
ucomiss xmm2, xmm5
jbe 0x421e69
movss xmm2, dword [esp + 0xc8]
ucomiss xmm2, xmm3
jbe 0x421e69
minss xmm0, dword [esp + 0x90]
cvttss2si edx, xmm5
cvttss2si ecx, xmm3
maxss xmm1, xmm6
cmp edx, ecx
jne 0x422102
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
subss xmm0, xmm1
mov eax, dword [esp + 0x13c]
subss xmm5, xmm2
subss xmm3, xmm2
addss xmm3, xmm5
mulss xmm3, dword [0x4b2068]
addss xmm3, dword [0x4b23b0]
mulss xmm3, dword [ebx + 0x10]
mulss xmm3, xmm0
addss xmm3, dword [esi + edx*4]
movss dword [esi + edx*4], xmm3
mulss xmm0, dword [ebx + 0x10]
addss xmm0, dword [eax + edx*4]
movss dword [eax + edx*4], xmm0
jmp 0x4220fb
cmp dword [esp + 0xc4], 0
movss xmm0, dword [esp + 0x3c]
js 0x4220fb
xor edi, edi
xorps xmm7, xmm7
cvtsi2ss xmm7, edi
mov ebp, edi
inc edi
movups xmm3, xmmword [esp + 0x60]
xorps xmm2, xmm2
cvtsi2ss xmm2, edi
movaps xmm5, xmm7
ucomiss xmm7, xmm4
movss dword [esp + 0x70], xmm7
movaps xmm1, xmm2
subss xmm5, xmm4
subss xmm1, xmm4
divss xmm5, xmm0
divss xmm1, xmm0
addss xmm5, xmm6
addss xmm1, xmm6
movss dword [esp + 0x40], xmm5
jbe 0x421f52
ucomiss xmm3, xmm2
jbe 0x421f52
movss dword [esp + 0x28], xmm1
movss dword [esp + 0xb0], xmm2
mov ecx, esi
mov edx, ebp
movaps xmm0, xmm4
movaps xmm1, xmm6
movaps xmm2, xmm7
movss dword [esp + 4], xmm5
mov dword [esp], ebx
call fcn.004248b8
movss xmm0, dword [esp + 0x28]
movss xmm1, dword [esp + 0x40]
movss xmm2, dword [esp + 0xb0]
mov dword [esp], ebx
mov ecx, esi
mov edx, ebp
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x70]
call fcn.004248b8
movss xmm0, dword [esp + 0x90]
movss xmm1, dword [esp + 0x28]
mov dword [esp], ebx
mov ecx, esi
mov edx, ebp
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0xb0]
jmp 0x421ffe
ucomiss xmm7, xmm3
jbe 0x421fad
ucomiss xmm4, xmm2
jbe 0x421fad
movss dword [esp + 4], xmm1
movss dword [esp + 0x28], xmm1
mov ecx, esi
mov edx, ebp
movaps xmm0, xmm4
movaps xmm1, xmm6
mov dword [esp], ebx
movss dword [esp + 0xb0], xmm2
call fcn.004248b8
movss xmm0, dword [esp + 0x40]
movss xmm1, dword [esp + 0x28]
movss xmm2, dword [esp + 0x70]
mov dword [esp], ebx
mov ecx, esi
mov edx, ebp
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0xb0]
jmp 0x421fd7
ucomiss xmm7, xmm4
jbe 0x421fb7
ucomiss xmm3, xmm7
ja 0x421fc1
ucomiss xmm7, xmm3
jbe 0x422031
ucomiss xmm4, xmm7
jbe 0x422031
mov ecx, esi
mov edx, ebp
movaps xmm0, xmm4
movaps xmm1, xmm6
movaps xmm2, xmm7
movss dword [esp + 4], xmm5
mov dword [esp], ebx
call fcn.004248b8
movss xmm0, dword [esp + 0x90]
movss xmm1, dword [esp + 0x40]
mov ecx, esi
mov edx, ebp
mov dword [esp], ebx
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x70]
movups xmm2, xmmword [esp + 0x60]
call fcn.004248b8
movss xmm0, dword [esp + 0x3c]
movups xmm4, xmmword [esp + 0xd0]
movss xmm6, dword [esp + 0x30]
cmp dword [esp + 0xac], edi
xorps xmm7, xmm7
jne 0x421e7f
jmp 0x4220fb
ucomiss xmm2, xmm4
jbe 0x42203b
ucomiss xmm3, xmm2
ja 0x422045
ucomiss xmm2, xmm3
jbe 0x42206c
ucomiss xmm4, xmm2
jbe 0x42206c
movss dword [esp + 4], xmm1
movss dword [esp + 0x28], xmm1
mov ecx, esi
mov edx, ebp
movaps xmm0, xmm4
movaps xmm1, xmm6
mov dword [esp], ebx
movss dword [esp + 0xb0], xmm2
jmp 0x421f23
movss xmm0, dword [esp + 0x90]
mov ecx, esi
mov edx, ebp
movaps xmm1, xmm6
movaps xmm2, xmm3
mov dword [esp], ebx
movss dword [esp + 4], xmm0
movaps xmm0, xmm4
jmp 0x422003
movss xmm0, dword [esp + 0x90]
cvttss2si ebp, xmm4
mov ecx, esi
movaps xmm1, xmm6
movaps xmm2, xmm4
mov dword [esp], ebx
movups xmmword [esp + 0xd0], xmm4
mov edx, ebp
movss dword [esp + 4], xmm0
movaps xmm0, xmm4
call fcn.004248b8
movss xmm0, dword [esp + 0x90]
mov ecx, dword [esp + 0xcc]
movss xmm1, dword [esp + 0x30]
inc ebp
mov dword [esp], ebx
mov edx, ebp
movss dword [esp + 4], xmm0
movups xmm0, xmmword [esp + 0xd0]
movaps xmm2, xmm0
call fcn.004248b8
movss xmm6, dword [esp + 0x30]
xorps xmm7, xmm7
mov ebx, dword [ebx]
jmp 0x421ced
movss xmm7, dword [ebx + 0xc]
ucomiss xmm5, xmm3
jbe 0x422141
movss xmm4, dword [esp + 0x90]
subss xmm1, xmm6
subss xmm0, xmm6
xorps xmm7, xmmword [0x4b2430]
mov eax, edx
movaps xmm2, xmm4
subss xmm2, xmm1
movaps xmm1, xmm4
movaps xmm4, xmm5
subss xmm1, xmm0
movaps xmm0, xmm2
movups xmm2, xmmword [esp + 0x60]
jmp 0x42214e
mov eax, ecx
movaps xmm2, xmm4
movaps xmm4, xmm3
mov ecx, edx
movaps xmm3, xmm5
lea edi, [ecx + 1]
movaps xmm5, xmm7
movups xmmword [esp + 0x40], xmm7
mov edx, eax
xorps xmm7, xmm7
cvtsi2ss xmm7, edi
sub edx, edi
subss xmm7, xmm2
mulss xmm7, xmm5
movss xmm5, dword [ebx + 0x10]
addss xmm7, xmm6
cvtsi2ss xmm6, ecx
subss xmm3, xmm6
movaps xmm6, xmm7
subss xmm6, xmm1
movss dword [esp + 0x70], xmm5
mulss xmm6, xmm5
movss xmm5, dword [0x4b23b0]
addss xmm3, xmm5
mulss xmm3, dword [0x4b2068]
addss xmm3, xmm5
movups xmm5, xmmword [esp + 0x40]
mulss xmm3, xmm6
addss xmm3, dword [esi + ecx*4]
movss dword [esi + ecx*4], xmm3
jle 0x4221f3
mulss xmm5, dword [esp + 0x70]
mov edi, dword [esp + 0x160]
movaps xmm2, xmm5
lea edi, [edi + ecx*4]
not ecx
mulss xmm2, dword [0x4b2064]
add ecx, eax
movaps xmm3, xmm2
addss xmm3, xmm6
addss xmm6, xmm5
addss xmm3, dword [edi]
movss dword [edi], xmm3
add edi, 4
dec ecx
jne 0x4221da
movups xmm3, xmmword [esp + 0x40]
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
mov ecx, dword [esp + 0x13c]
mulss xmm3, xmm2
xorps xmm2, xmm2
cvtsi2ss xmm2, eax
addss xmm3, xmm7
subss xmm4, xmm2
xorps xmm7, xmm7
movaps xmm2, xmm0
subss xmm0, xmm1
addss xmm4, xmm7
subss xmm2, xmm3
movss xmm3, dword [esp + 0x70]
mulss xmm4, dword [0x4b2068]
mulss xmm0, xmm3
addss xmm4, dword [0x4b23b0]
mulss xmm4, xmm3
mulss xmm2, xmm4
addss xmm2, xmm6
movss xmm6, dword [esp + 0x30]
addss xmm2, dword [esi + eax*4]
movss dword [esi + eax*4], xmm2
addss xmm0, dword [ecx + eax*4]
movss dword [ecx + eax*4], xmm0
jmp 0x4220fb
cmp dword [esp + 0xc4], 0
movaps xmm2, xmmword [0x4b23c0]
movss xmm3, dword [section..rdata]
movss xmm4, dword [0x4b2064]
mov ebp, dword [esp + 0x168]
mov edi, 0xff
js 0x4222da
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0x120]
xorps xmm0, xmm0
mov eax, esi
addss xmm0, dword [eax + ebp]
movss xmm1, dword [eax]
addss xmm1, xmm0
andps xmm1, xmm2
mulss xmm1, xmm3
addss xmm1, xmm4
cvttss2si ebx, xmm1
cmp ebx, edi
cmovge ebx, edi
add eax, 4
mov byte [edx], bl
inc edx
dec ecx
jne 0x4222b0
mov edi, dword [esp + 0x1b0]
test edi, edi
je 0x422305
mov ecx, edi
lea eax, [esp + 0x1b0]
movss xmm0, dword [ecx + 8]
addss xmm0, dword [ecx + 4]
movss dword [ecx + 4], xmm0
mov eax, dword [eax]
mov ecx, dword [eax]
test ecx, ecx
jne 0x4222ee
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x11c]
mov ebp, dword [esp + 0x17c]
add eax, dword [esp + 0x34]
inc ecx
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x180]
cmp eax, dword [esp + 0x144]
lea eax, [eax + 1]
jne 0x421ae5
mov eax, dword [esp + 0xf8]
test eax, eax
je 0x422358
mov edi, dword [eax]
mov dword [esp], eax
call fcn.00418655
test edi, edi
mov eax, edi
jne 0x422348
lea eax, [esp + 0x1d4]
cmp esi, eax
je 0x42236b
mov dword [esp], esi
call fcn.00418655
mov eax, dword [esp + 0x84]
mov dword [esp], eax
call fcn.00418655
mov esi, dword [esp + 0x8c]
mov dword [esp], esi
call fcn.00418655
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
jmp 0x4223a1
mov dword [esp], 0
call fcn.00418655
mov dword [esp], esi
call fcn.00418655
mov eax, dword [esp + 0xec]
mov ecx, dword [esp + 0xfc]
lea eax, [eax + ecx + 8]
mov ecx, dword [esp + 0x1cc]
mov dword [esp + 0xd0], eax
mov dword [esp], ecx
call fcn.00418655
mov edx, dword [esp + 0x5c]
movzx esi, word [esp + 0xa4]
xorps xmm3, xmm3
cmp dl, 2
jb 0x42265c
mov ecx, dword [esp + 0xd0]
movzx eax, word [ecx - 2]
movzx ebp, word [ecx - 4]
movzx ebx, word [ecx + 2]
mov dword [esp + 0x60], eax
test eax, eax
movzx eax, word [ecx]
mov ecx, 0
mov dword [esp + 0x1d8], ecx
mov dword [esp + 0x1d4], ecx
je 0x42265c
add eax, dword [esp + 0xf0]
imul ebx, dword [esp + 0x34]
mov dword [esp + 0xb0], ebp
add ebx, eax
mov eax, dword [esp + 0x130]
lea ecx, [eax + ebp]
lea edi, [eax + ebp]
mov eax, ebp
not eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x28], edi
add eax, edx
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0x70], eax
lea eax, [esp + 0x1d4]
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0048b760
mov ecx, dword [esp + 0x5c]
mov eax, ecx
add al, 0xfe
cmp al, 3
ja case.default.0x422482
movzx eax, al
jmp dword [eax*4 + 0x4b7480]
xor esi, esi
cmp ebp, ecx
mov ecx, 0
xorps xmm3, xmm3
jb 0x422612
xor ecx, ecx
xor eax, eax
mov esi, eax
movzx edx, byte [ebx + eax]
lea ebp, [eax + 2]
and esi, 7
and ebp, 7
movzx esi, byte [esp + esi + 0x1d4]
mov byte [esp + ebp + 0x1d4], dl
sub edx, esi
add ecx, edx
mov edx, ecx
shr edx, 1
mov byte [ebx + eax], dl
inc eax
cmp edi, eax
jne 0x42249f
jmp 0x422604
xor esi, esi
cmp ebp, ecx
mov ecx, 0
xorps xmm3, xmm3
jb 0x422612
mov edi, dword [esp + 0x5c]
xor ecx, ecx
xor esi, esi
mov edx, esi
movzx eax, byte [ebx + esi]
lea ebp, [edi + esi]
and edx, 7
and ebp, 7
movzx edx, byte [esp + edx + 0x1d4]
mov byte [esp + ebp + 0x1d4], al
sub eax, edx
xor edx, edx
add ecx, eax
mov eax, ecx
div edi
mov edx, dword [esp + 0x40]
mov byte [ebx + esi], al
inc esi
add edx, esi
jne 0x4224ec
jmp 0x422604
xor esi, esi
cmp ebp, ecx
mov ecx, 0
xorps xmm3, xmm3
jb 0x422612
xor ecx, ecx
xor esi, esi
mov edx, esi
movzx eax, byte [ebx + esi]
lea ebp, [esi + 3]
and edx, 7
and ebp, 7
movzx edx, byte [esp + edx + 0x1d4]
mov byte [esp + ebp + 0x1d4], al
sub eax, edx
mov edx, 0xaaaaaaab
add ecx, eax
mov eax, ecx
mul edx
shr edx, 1
mov byte [ebx + esi], dl
inc esi
cmp edi, esi
jne 0x42253b
jmp 0x422604
xor esi, esi
cmp ebp, ecx
mov ecx, 0
xorps xmm3, xmm3
jb 0x422612
xor ecx, ecx
xor eax, eax
mov esi, eax
movzx edx, byte [ebx + eax]
lea ebp, [eax + 4]
and esi, 7
and ebp, 7
movzx esi, byte [esp + esi + 0x1d4]
mov byte [esp + ebp + 0x1d4], dl
sub edx, esi
add ecx, edx
mov edx, ecx
shr edx, 2
mov byte [ebx + eax], dl
inc eax
cmp edi, eax
jne 0x42258b
jmp 0x422604
xor esi, esi
cmp ebp, ecx
mov ecx, 0
xorps xmm3, xmm3
jb 0x422612
xor ecx, ecx
xor esi, esi
mov edx, esi
movzx eax, byte [ebx + esi]
lea ebp, [esi + 5]
and edx, 7
and ebp, 7
movzx edx, byte [esp + edx + 0x1d4]
mov byte [esp + ebp + 0x1d4], al
sub eax, edx
mov edx, 0xcccccccd
add ecx, eax
mov eax, ecx
mul edx
shr edx, 2
mov byte [ebx + esi], dl
inc esi
cmp edi, esi
jne 0x4225ce
mov esi, dword [esp + 0x90]
mov ebp, dword [esp + 0xb0]
cmp esi, ebp
mov edi, ebp
mov ebp, dword [esp + 0x5c]
jge 0x422639
mov eax, esi
xor edx, edx
and eax, 7
movzx eax, byte [esp + eax + 0x1d4]
sub ecx, eax
mov eax, ecx
div ebp
mov byte [ebx + esi], al
inc esi
cmp edi, esi
jne 0x42261c
mov eax, dword [esp + 0x70]
mov edx, ebp
mov ebp, edi
add ebx, dword [esp + 0x34]
movzx esi, word [esp + 0xa4]
mov edi, dword [esp + 0x28]
inc eax
cmp eax, dword [esp + 0x60]
jne 0x422454
mov ebx, dword [esp + 0xa8]
rol si, 8
mov edi, esi
cmp bl, 2
jb 0x42293b
mov ecx, dword [esp + 0xd0]
mov word [esp + 0xa4], di
movzx eax, word [ecx - 4]
movzx edx, word [ecx - 2]
movzx esi, word [ecx + 2]
mov dword [esp + 0xb0], eax
test eax, eax
movzx eax, word [ecx]
mov ecx, 0
mov dword [esp + 0x1d8], ecx
mov dword [esp + 0x1d4], ecx
je 0x422930
add eax, dword [esp + 0xf0]
imul esi, dword [esp + 0x34]
mov dword [esp + 0x40], edx
add esi, eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0x60], esi
xor esi, esi
lea ecx, [eax + edx]
add eax, edx
mov dword [esp + 0x90], ecx
mov ecx, edx
mov dword [esp + 0x2c], eax
not ecx
add ecx, ebx
mov dword [esp + 0x70], ecx
lea eax, [esp + 0x1d4]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0048b760
mov eax, ebx
mov dword [esp + 0x28], esi
add al, 0xfe
cmp al, 3
ja case.default.0x422715
movzx eax, al
jmp dword [eax*4 + 0x4b7490]
mov edx, dword [esp + 0x40]
xor ebp, ebp
mov ecx, 0
cmp edx, ebx
jb 0x4228de
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x2c]
xor ecx, ecx
xor edx, edx
mov ebp, edx
movzx ebx, byte [eax]
lea esi, [edx + 2]
inc edx
and ebp, 7
and esi, 7
movzx ebp, byte [esp + ebp + 0x1d4]
mov byte [esp + esi + 0x1d4], bl
sub ebx, ebp
add ecx, ebx
mov ebx, ecx
shr ebx, 1
mov byte [eax], bl
add eax, dword [esp + 0x34]
cmp edi, edx
jne 0x42273b
jmp 0x4228d3
mov edx, dword [esp + 0x40]
xor ebp, ebp
mov ecx, 0
cmp edx, ebx
jb 0x4228de
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0xa8]
xor ecx, ecx
xor ebx, ebx
mov edx, ebx
movzx eax, byte [ebp]
lea esi, [edi + ebx]
inc ebx
and edx, 7
and esi, 7
movzx edx, byte [esp + edx + 0x1d4]
mov byte [esp + esi + 0x1d4], al
sub eax, edx
xor edx, edx
add ecx, eax
mov eax, ecx
div edi
mov edx, dword [esp + 0x70]
mov byte [ebp], al
add ebp, dword [esp + 0x34]
add edx, ebx
jne 0x422792
jmp 0x4228d3
mov edx, dword [esp + 0x40]
xor ebp, ebp
mov ecx, 0
cmp edx, ebx
jb 0x4228de
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0x2c]
xor ecx, ecx
xor ebx, ebx
mov edx, ebx
movzx eax, byte [ebp]
lea esi, [ebx + 3]
inc ebx
and edx, 7
and esi, 7
movzx edx, byte [esp + edx + 0x1d4]
mov byte [esp + esi + 0x1d4], al
sub eax, edx
mov edx, 0xaaaaaaab
add ecx, eax
mov eax, ecx
mul edx
shr edx, 1
mov byte [ebp], dl
add ebp, dword [esp + 0x34]
cmp edi, ebx
jne 0x4227ee
jmp 0x4228d3
mov edx, dword [esp + 0x40]
xor ebp, ebp
mov ecx, 0
cmp edx, ebx
jb 0x4228de
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x2c]
xor ecx, ecx
xor edx, edx
mov esi, edx
movzx ebx, byte [eax]
lea ebp, [edx + 4]
inc edx
and esi, 7
and ebp, 7
movzx esi, byte [esp + esi + 0x1d4]
mov byte [esp + ebp + 0x1d4], bl
sub ebx, esi
add ecx, ebx
mov ebx, ecx
shr ebx, 2
mov byte [eax], bl
add eax, dword [esp + 0x34]
cmp edi, edx
jne 0x42284b
jmp 0x4228d3
mov edx, dword [esp + 0x40]
xor ebp, ebp
mov ecx, 0
cmp edx, ebx
jb 0x4228de
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0x2c]
xor ecx, ecx
xor ebx, ebx
mov edx, ebx
movzx eax, byte [ebp]
lea esi, [ebx + 5]
inc ebx
and edx, 7
and esi, 7
movzx edx, byte [esp + edx + 0x1d4]
mov byte [esp + esi + 0x1d4], al
sub eax, edx
mov edx, 0xcccccccd
add ecx, eax
mov eax, ecx
mul edx
shr edx, 2
mov byte [ebp], dl
add ebp, dword [esp + 0x34]
cmp edi, ebx
jne 0x422899
mov ebp, dword [esp + 0x90]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0xa8]
cmp ebp, edx
jge 0x422918
mov ebx, esi
imul ebx, ebp
add ebx, dword [esp + 0x60]
mov eax, ebp
xor edx, edx
inc ebp
and eax, 7
movzx eax, byte [esp + eax + 0x1d4]
sub ecx, eax
mov eax, ecx
div edi
mov edx, dword [esp + 0x40]
mov byte [ebx], al
add ebx, esi
cmp edx, ebp
jne 0x4228f6
mov esi, dword [esp + 0x28]
inc dword [esp + 0x60]
mov ebx, edi
inc esi
cmp esi, dword [esp + 0xb0]
jne 0x4226eb
movzx edi, word [esp + 0xa4]
xorps xmm3, xmm3
mov ebx, dword [esp + 0xd0]
mov edx, dword [esp + 0x188]
mov esi, dword [esp + 0x184]
movss xmm4, dword [esp + 0x178]
movss xmm2, dword [esp + 0x134]
movss xmm5, dword [esp + 0x174]
movss xmm1, dword [esp + 0x138]
movzx ecx, word [ebx]
lea eax, [edx + edx*8]
lea eax, [eax + eax*2]
add eax, edx
mov word [esi + eax], cx
movzx ecx, word [ebx + 2]
mov word [esi + eax + 2], cx
movzx ecx, word [ebx - 4]
add cx, word [ebx]
mov word [esi + eax + 4], cx
movzx ecx, word [ebx - 2]
add cx, word [ebx + 2]
mov word [esi + eax + 6], cx
movsx ecx, di
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
mulss xmm0, dword [esp + 0x190]
movss dword [esi + eax + 0x10], xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 0x1c8]
mulss xmm0, xmm4
addss xmm0, xmm2
movss dword [esi + eax + 8], xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 0x1c4]
mulss xmm0, xmm5
addss xmm0, xmm1
movss dword [esi + eax + 0xc], xmm0
movzx ecx, word [ebx - 4]
add ecx, dword [esp + 0x1c8]
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
mulss xmm0, xmm4
addss xmm0, xmm2
movss dword [esi + eax + 0x14], xmm0
movzx ecx, word [ebx - 2]
mov ebx, dword [esp + 0x18c]
add ecx, dword [esp + 0x1c4]
xorps xmm0, xmm0
cvtsi2ss xmm0, ecx
mov ecx, dword [esp + 0x14c]
mulss xmm0, xmm5
addss xmm0, xmm1
movss dword [esi + eax + 0x18], xmm0
mov ecx, dword [ecx]
inc edx
inc ebx
cmp edx, ecx
jl 0x4212ae
mov ecx, dword [esp + 0x15c]
mov eax, dword [esp + 0x38]
inc ecx
cmp ecx, dword [esp + 0x158]
jne 0x4210b2
mov ecx, dword [esp + 0x10c]
mov edx, dword [esp + 0x150]
lea eax, [eax + ecx + 0x7c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x12c]
imul ecx, eax, 0x6c
movss xmm0, dword [edx + ecx + 0x3c]
ucomiss xmm0, dword [0x4b23b0]
jne 0x422a9a
jnp 0x422b8d
movq xmm4, qword [0x4b24d8]
movss xmm5, dword [0x4b2060]
xor ecx, ecx
mov eax, 0xff
movd xmm1, ecx
por xmm1, xmm4
subsd xmm1, xmm4
cvtsd2ss xmm1, xmm1
mulss xmm1, xmm0
movaps xmm2, xmm1
cvttss2si esi, xmm1
subss xmm2, xmm5
cvttss2si edx, xmm2
xor edx, 0x80000000
ucomiss xmm1, xmm5
cmovb edx, esi
cmp edx, eax
cmovae edx, eax
mov byte [esp + ecx + 0x1d4], dl
inc ecx
cmp ecx, 0x100
jne 0x422ab1
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10c]
mov edi, dword [eax + ecx + 0x80]
test edi, edi
je 0x422b86
mov eax, ecx
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov ebx, dword [ecx]
mov ecx, eax
lea ecx, [edx + ecx + 0x80]
mov edx, ebx
cmp dword [edx + 0xc], 0
je 0x422b78
movzx esi, word [edx + 6]
test esi, esi
je 0x422b78
movzx ebp, word [edx + 8]
movzx ebx, word [edx + 0xa]
movzx edi, word [edx + 4]
add ebp, dword [esp + 0xf0]
imul ebx, dword [esp + 0x34]
add ebx, ebp
test di, di
je 0x422b64
xor ebp, ebp
movzx eax, byte [ebx + ebp]
mov al, byte [esp + eax + 0x1d4]
mov byte [ebx + ebp], al
inc ebp
cmp edi, ebp
jne 0x422b51
add ebx, dword [esp + 0x34]
cmp esi, 1
lea esi, [esi - 1]
jg 0x422b4a
mov eax, dword [esp + 0x40]
mov edi, dword [ecx]
mov ebx, dword [eax]
mov eax, edi
add edx, 0x10
shl eax, 4
add eax, ebx
cmp edx, eax
jne 0x422b22
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x40]
inc eax
mov dword [ecx], 0
mov ecx, eax
mov eax, dword [esp + 0x3f0]
cmp ecx, dword [eax + 0x48]
jl 0x421041
mov eax, dword [esp + 0x104]
mov dword [esp], eax
call fcn.00418655
mov eax, dword [esp + 0xe4]
mov dword [esp], eax
call fcn.00418655
mov eax, dword [esp + 0x108]
mov dword [esp], eax
call fcn.00418655
mov eax, dword [esp + 0x3f0]
cmp dword [eax + 0x48], 0
jle 0x422f77
movss xmm3, dword [0x4b23a8]
xor esi, esi
mov edi, dword [eax + 0x50]
imul ebx, esi, 0x6c
lea eax, [edi + ebx + 0x34]
mov ecx, dword [eax + 0x34]
cmp byte [eax], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], ecx
je 0x422c20
mov ebp, eax
call fcn.004188bc
movss xmm3, dword [0x4b23a8]
mov al, byte [ebp]
jmp 0x422c22
xor eax, eax
mov ecx, dword [esp + 0x38]
imul ebp, esi, 0x8c
test al, al
mov dword [esp + 0x3c], esi
je 0x422c42
mov esi, dword [esp + 0x40]
movss xmm1, dword [esi + 0x48]
jmp 0x422d36
mov eax, ecx
mov ecx, dword [ecx + ebp + 4]
movss xmm0, dword [edi + ebx + 0x10]
mov edx, dword [eax + ebp + 0x1c]
movzx eax, byte [ecx + edx + 4]
movzx esi, byte [ecx + edx + 5]
shl eax, 8
cwde
or eax, esi
movzx esi, byte [ecx + edx + 6]
movzx ecx, byte [ecx + edx + 7]
shl esi, 8
movsx edx, si
or edx, ecx
mov ecx, eax
sub ecx, edx
xorps xmm2, xmm2
cvtsi2ss xmm2, ecx
movsx ecx, dx
divss xmm0, xmm2
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
test cx, cx
movaps xmm2, xmm3
mulss xmm1, xmm0
jle 0x422ca1
movss xmm2, dword [0x4b23b0]
addss xmm2, xmm1
cwde
lea ecx, [edi + ebx]
cvttps2dq xmm1, xmm2
mov dword [esp + 0x34], ecx
lea ecx, [edi + ebx + 0x10]
test ax, ax
cvtdq2ps xmm1, xmm1
mov dword [esp + 0x60], ecx
movups xmmword [esp + 0x70], xmm1
xorps xmm1, xmm1
cvtsi2ss xmm1, eax
mulss xmm0, xmm1
movaps xmm1, xmm3
jle 0x422cdc
movss xmm1, dword [0x4b23b0]
mov esi, dword [esp + 0x40]
addss xmm1, xmm0
cvttps2dq xmm0, xmm1
cvtdq2ps xmm0, xmm0
movups xmmword [esp + 0xb0], xmm0
mov ecx, esi
call fcn.0041cf22
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x3f0]
movups xmm1, xmmword [esp + 0xb0]
movups xmm0, xmmword [esp + 0x70]
movss xmm3, dword [0x4b23a8]
mov eax, dword [eax]
mov dword [esi], eax
mov dword [esi + 0x40], edx
mov dword [esi + 0x44], ecx
mov ecx, dword [esp + 0x38]
movss dword [esi + 0x48], xmm1
movss dword [esi + 0x4c], xmm0
inc word [esi + 0x3e]
addss xmm1, dword [0x4b2064]
mov eax, dword [ecx + ebp + 0x88]
test eax, eax
jle 0x422f62
movss xmm0, dword [edi + ebx + 0x28]
mov ecx, dword [esp + 0x38]
movss dword [esp + 0xb0], xmm0
cvttps2dq xmm0, xmm1
lea edx, [ecx + ebp + 0x88]
cvtdq2ps xmm0, xmm0
mov dword [esp + 0xd0], edx
addss xmm0, dword [edi + ebx + 0x2c]
xor edi, edi
movups xmmword [esp + 0x90], xmm0
mov ecx, dword [edx - 4]
lea esi, [edi + edi*2]
mov ebx, dword [ecx + esi*8 + 0xc]
test ebx, ebx
mov dword [esp + 0x70], ebx
jle 0x422f59
mov dword [esp + 0x2c], edi
lea eax, [ecx + esi*8 + 0xc]
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 4]
movzx esi, word [eax + edi]
test si, si
jne 0x422ddb
cmp word [eax + edi + 4], 0
jne 0x422ddb
cmp word [eax + edi + 2], 0
jne 0x422ddb
cmp word [eax + edi + 6], 0
je 0x422f3e
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x28]
mov ecx, dword [ecx - 8]
add ecx, ebx
cmp byte [edx], 0
je 0x422e15
mov edx, dword [esp + 0x40]
movzx ebp, cx
cmp dword [edx + 0x28], ebp
jle 0x422e15
mov edx, dword [esp + 0x40]
mov edx, dword [edx + 0x30]
cmp word [edx + ebp*2], 0xffff
je 0x422e15
mov edx, dword [esp + 0x40]
cmp dword [edx + 0x18], 0
jne 0x422f3e
mov edx, dword [esp + 0x3f0]
movss xmm4, dword [0x4b23b0]
movss xmm6, dword [eax + edi + 8]
movss xmm5, dword [eax + edi + 0xc]
movss xmm2, dword [eax + edi + 0x14]
xorps xmm1, xmm1
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [edx + 0x18]
movaps xmm3, xmm4
addss xmm6, xmm1
addss xmm5, xmm1
addss xmm2, xmm1
divss xmm3, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [edx + 0x1c]
movzx edx, si
divss xmm4, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, edx
movzx edx, word [eax + edi + 2]
mulss xmm0, xmm3
movss dword [esp + 0x70], xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, edx
movzx edx, word [eax + edi + 4]
mulss xmm0, xmm4
cvtsi2ss xmm7, edx
movzx edx, word [eax + edi + 6]
movss dword [esp + 0x60], xmm0
movss xmm0, dword [esp + 0xb0]
mulss xmm7, xmm3
xorps xmm3, xmm3
cvtsi2ss xmm3, edx
addss xmm2, xmm0
addss xmm6, xmm0
mulss xmm3, xmm4
movss xmm4, dword [eax + edi + 0x18]
addss xmm4, xmm1
movups xmm1, xmmword [esp + 0x90]
addss xmm4, xmm1
addss xmm5, xmm1
movss xmm1, dword [eax + edi + 0x10]
movzx eax, cx
movss dword [esp + 0x20], xmm3
movss xmm3, dword [esp + 0x60]
mov ecx, dword [esp + 0x40]
movss dword [esp + 0x1c], xmm7
movss dword [esp + 0xc], xmm2
movss dword [esp + 4], xmm6
movss dword [esp + 0x10], xmm4
movss dword [esp + 8], xmm5
mov dword [esp], eax
movss dword [esp + 0x24], xmm1
movss xmm1, dword [esp + 0x70]
movss dword [esp + 0x18], xmm3
movss dword [esp + 0x14], xmm1
call fcn.0041b870
sub esp, 0x28
mov eax, dword [esp + 0x34]
movss xmm3, dword [0x4b23a8]
mov eax, dword [eax]
mov dword [esp + 0x70], eax
inc ebx
add edi, 0x1c
cmp ebx, dword [esp + 0x70]
jl 0x422daf
mov edx, dword [esp + 0xd0]
mov edi, dword [esp + 0x2c]
mov eax, dword [edx]
inc edi
cmp edi, eax
jl 0x422d89
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x3f0]
inc esi
cmp esi, dword [eax + 0x48]
jl 0x422bf2
mov ecx, dword [esp + 0x110]
mov esi, eax
mov dword [esp], ecx
call fcn.00418655
mov eax, dword [esp + 0x128]
mov dword [esp], eax
call fcn.00418655
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.00418655
mov dword [esp], esi
call fcn.0041a501
mov bl, 1
jmp 0x422fea
test ecx, ecx
je 0x422fbf
mov dword [esp], ecx
mov esi, eax
call fcn.00418655
mov eax, esi
test eax, eax
je 0x422fcb
mov dword [esp], eax
call fcn.00418655
xor ebx, ebx
jmp 0x422fea
mov eax, dword [esp + 0x3f0]
mov ecx, dword [esp + 0x38]
xor ebx, ebx
mov dword [eax + 0x1c], ebx
mov dword [eax + 0x18], ebx
mov dword [esp], ecx
call fcn.00418655
mov ecx, dword [esp + 0x3d8]
xor ecx, esp
call fcn.0043f03d
mov eax, ebx
add esp, 0x3dc
pop esi
pop edi
pop ebx
pop ebp
ret