Function at 0x4829e0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x350
call 0x4829f4
pop eax
mov edi, edx
mov ebx, ecx
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
test eax, eax
je 0x482a49
mov edx, dword [edi]
lea esi, [esp + 0x1b0]
mov ecx, esi
push eax
push dword [edi + 4]
call fcn.00485dc0
add esp, 8
lea ecx, [esp + 0xf0]
mov edx, esi
call fcn.00486c40
movzx eax, byte [esp + 0xf0]
cmp al, 0x4b
jne 0x482d30
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x4c], ebx
jmp 0x482a65
mov eax, dword [edi + 0x6c]
test eax, eax
je 0x482d79
lock inc dword [eax - 8]
jle 0x484d5a
mov dword [esp + 0x4c], ebx
add eax, 0xfffffff8
mov dword [esp + 0xc], eax
mov ecx, dword [ebp + 8]
cmp byte [edi + 0x70], 0
mov dword [esp + 0x124], edi
movsd xmm3, qword [esp + 0x2e0]
movsd xmm2, qword [esp + 0x2c4]
movsd xmm1, qword [ecx + 8]
mov edx, dword [ecx + 0x20]
setne bl
movsd xmm0, qword [ecx]
movsd qword [esp + 0x260], xmm1
movsd xmm1, qword [ecx + 0x10]
mov eax, edx
movsd qword [esp + 0x258], xmm0
movq xmm0, qword [esp + 0x2f8]
shr eax, 0x10
cmp ax, 5
setae bh
and edx, 0xff00
xor eax, eax
movsd qword [esp + 0x268], xmm1
movsd xmm1, qword [ecx + 0x18]
cmp edx, 0x800
sete al
xor edi, edi
test bl, bh
lea esi, [eax*8 + 8]
lea edx, [eax*8 + 0xc]
cmove esi, edi
cmove edx, edi
mov edi, dword [ecx + 8]
xor eax, eax
movsd qword [esp + 0x270], xmm1
movsd xmm1, qword [ecx + 0x20]
add edi, 0xfffffffd
movsd qword [esp + 0x278], xmm1
movsd xmm1, qword [ecx + 0x28]
cmp edi, 2
mov edi, dword [esp + 0xc]
setb al
movsd qword [esp + 0x280], xmm1
movsd xmm1, qword [esp + 0x2f0]
mov dword [esp + 0x2a0], edi
mov dword [esp + 0x288], 0
mov dword [esp + 0x290], 0
mov dword [esp + 0x298], 0
mov dword [esp + 0x29c], 0
mov dword [esp + 0x2a4], esi
mov dword [esp + 0x2a8], 0
mov dword [esp + 0x2ac], edx
mov dword [esp + 0x2b0], edx
mov dword [esp + 0x1c0], 0x2f
mov dword [esp + 0x1c4], 0
mov edx, dword [esp + 0x2cc]
movq qword [esp + 0x1f0], xmm0
movsd qword [esp + 0x1d8], xmm3
lea esi, [esp + 0x258]
add edi, 8
movsd qword [esp + 0x1e8], xmm1
movsd xmm1, qword [esp + 0x2e8]
movsd qword [esp + 0x1e0], xmm1
mov dword [esp + 0x224], edx
mov edx, dword [esp + 0x2c0]
movq xmm1, qword [esp + 0x2b8]
movsd qword [esp + 0x21c], xmm2
mov dword [esp + 0x23c], edx
movq qword [esp + 0x234], xmm1
mov dword [esp + 0x1b0], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1bc], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x1b8], eax
mov eax, dword [esp + 0x270]
mov ebx, dword [esp + 0x274]
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], esi
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb8], 0
mov dword [esp + 0xd4], 0
lea ecx, [esp + 0xf0]
lea edx, [esp + 0xa8]
call fcn.004815f0
movzx eax, byte [esp + 0xf0]
cmp al, 0x4b
jne 0x482ce2
lea esi, [esp + 0xf0]
lea edi, [esp + 0xa8]
nop word cs:[eax + eax]
nop
cmp byte [esp + 0xf1], 0
mov ebx, dword [esp + 0xb8]
je 0x482ddc
test ebx, ebx
jne 0x482de4
mov ecx, esi
mov edx, edi
call fcn.004815f0
movzx eax, byte [esp + 0xf0]
cmp al, 0x4b
je 0x482cb0
mov edx, dword [esp + 0x4c]
movzx ecx, byte [esp + 0xf1]
movzx edi, word [esp + 0xf2]
mov esi, dword [esp + 0xf8]
mov byte [edx + 8], al
mov byte [edx + 9], cl
mov ecx, dword [esp + 0xf4]
mov word [edx + 0xa], di
mov dword [edx + 0xc], ecx
mov ecx, dword [esp + 0xfc]
mov dword [edx + 0x10], esi
mov dword [edx + 0x14], ecx
mov dword [edx + 4], 0
mov dword [edx], 2
jmp 0x4837e0
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0xf8]
mov esi, dword [esp + 0xfc]
movzx edi, word [esp + 0xf1]
mov ah, byte [esp + 0xf3]
mov word [ebx + 9], di
mov byte [ebx + 0xb], ah
mov byte [ebx + 8], al
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x14], esi
mov dword [ebx + 0x10], edx
mov dword [ebx + 4], 0
mov dword [ebx], 2
jmp 0x483877
mov edx, dword [edi]
lea esi, [esp + 0x1b0]
mov ecx, esi
push 0
push dword [edi + 4]
call fcn.00485dc0
add esp, 8
lea ecx, [esp + 0xa8]
mov edx, esi
call fcn.00486c40
movzx eax, byte [esp + 0xa8]
cmp al, 0x4b
jne 0x483246
mov ecx, dword [esp + 0xac]
xor eax, eax
lea edx, [ecx + 8]
lock cmpxchg dword [edi + 0x6c], edx
mov dword [esp + 0x4c], ebx
jne 0x4833c7
mov dword [esp + 0xc], ecx
lock inc dword [ecx]
jg 0x482a69
jmp 0x484d5a
test ebx, ebx
je 0x4833a6
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0xc], eax
call fcn.00418740
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x160], ebx
movaps xmm0, xmmword [0x4ac8d0]
mov edi, edx
mov dword [esp + 0x88], 0
mov dword [esp + 0x15c], 0x2e
mov dword [esp + 0x158], 0
mov dword [esp + 0xc], 0
dec edi
mov dword [esp + 0x164], eax
lea eax, [esp + 0xb8]
mov dword [esp + 0x168], esi
mov dword [esp + 0x16c], edx
add esi, 0x10
movaps xmmword [esp + 0x2d0], xmm0
movaps xmmword [esp + 0x70], xmm0
mov dword [esp + 0x170], eax
mov eax, dword [esp + 0x1b0]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x1b4]
mov dword [esp + 8], eax
jmp 0x482eb4
add esi, 0x10
dec edi
cmp edi, 0xffffffff
je 0x4831c5
lea eax, [esi - 0x10]
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov eax, dword [esp + 0x170]
movsd qword [esp + 0x40], xmm1
movsd qword [esp + 0x38], xmm0
mov eax, dword [eax + 0xc]
lea ecx, [esp + 0xf0]
lea ebx, [esp + 0x38]
lea edx, [esp + 0x160]
push ebx
push dword [eax + 0x20]
call fcn.0047ae60
add esp, 8
mov eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0xf4]
mov edx, eax
xor edx, 0x2e
or edx, ecx
je 0x483211
lea edx, [esp + 0xf8]
mov dword [esp + 0x168], esi
mov dword [esp + 0x16c], edi
movsd xmm0, qword [edx]
movq xmm1, qword [edx + 8]
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf0], eax
movq qword [edx + 8], xmm1
movsd qword [edx], xmm0
movsd qword [esp + 0x188], xmm0
movq qword [esp + 0x190], xmm1
movzx eax, word [esp + 0x100]
cmp eax, 0x71
jle 0x482fd0
cmp eax, 0x2130
jg 0x483030
add eax, 0xffffff8e
cmp eax, 0x1a
ja 0x482eb0
mov eax, dword [eax*4 + 0x484eb0]
add eax, dword [esp + 0x34]
jmp eax
add eax, 0xfffffffd
cmp eax, 0x18
ja 0x482eb0
mov eax, dword [eax*4 + 0x484e4c]
add eax, dword [esp + 0x34]
jmp eax
cmp eax, 0x2131
je 0x483143
cmp eax, 0x2132
je 0x48307e
cmp eax, 0x2133
jne 0x482eb0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf0]
call fcn.0047c9e0
mov eax, dword [esp + 0x38]
xor eax, 0xb
or eax, dword [esp + 0x3c]
jne 0x482eb0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x2a8], eax
jmp 0x482eb0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf0]
call fcn.0047c9e0
mov eax, dword [esp + 0x38]
xor eax, 0x17
or eax, dword [esp + 0x3c]
jne 0x482eb0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x2b0], eax
jmp 0x482eb0
mov eax, dword [esp + 0x8c]
or eax, dword [esp + 8]
jne 0x482eb0
lea ecx, [esp + 0x38]
lea edx, [esp + 0xf0]
call fcn.0047c9e0
mov eax, dword [esp + 0x38]
mov dword [esp + 8], 0
xor eax, 0x2d
or eax, dword [esp + 0x3c]
jne 0x4831b5
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b0], 1
mov dword [esp + 0x8c], 1
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1b8], eax
jmp 0x482eb0
mov dword [esp + 0x8c], 0
jmp 0x482eb0
mov eax, dword [esp + 0x170]
cmp dword [eax + 0x14], 0
jne 0x4831e5
mov ecx, dword [esp + 0x160]
sub ecx, dword [eax]
mov dword [eax + 0x14], 1
mov dword [eax + 0x18], ecx
movdqa xmm1, xmmword [esp + 0x70]
mov ebx, dword [esp + 0x4c]
mov edx, dword [esp + 0x124]
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x48327f
xor esi, esi
jmp 0x4832c9
lea eax, [esp + 0xf8]
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
mov eax, dword [esp + 0x4c]
movq qword [esp + 0x188], xmm0
movq qword [esp + 0x190], xmm1
movq qword [eax + 0x10], xmm1
movq qword [eax + 8], xmm0
jmp 0x4833b5
movzx ecx, byte [esp + 0xab]
mov esi, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
mov byte [esp + 0xf3], cl
movzx ecx, word [esp + 0xa9]
mov word [esp + 0xf1], cx
mov ecx, dword [esp + 0xac]
jmp 0x482d45
movzx eax, byte [esp + 0x279]
movdqu xmmword [esp + 0x328], xmm1
lea esi, [esp + 0x328]
lea ecx, [esp + 0xa8]
push esi
push dword [esp + 0x2a8]
push eax
call fcn.0047a7b0
add esp, 0xc
xor esi, esi
cmp byte [esp + 0xa8], 0x4b
jne 0x4832c2
mov esi, dword [esp + 0xac]
mov eax, dword [esp + 0xb0]
movdqa xmm1, xmmword [esp + 0x2d0]
mov dword [esp + 0x288], esi
mov dword [esp + 0x70], eax
mov dword [esp + 0x28c], eax
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x483312
cmp dword [esp + 0xc], 0
mov dword [esp + 0x290], 0
je 0x4833e9
xor edi, edi
jmp 0x48337f
movzx eax, byte [esp + 0x279]
movdqu xmmword [esp + 0x338], xmm1
mov edx, dword [esp + 0x124]
lea edi, [esp + 0x338]
lea ecx, [esp + 0xa8]
push edi
push dword [esp + 0x2a8]
push eax
call fcn.0047a7b0
add esp, 0xc
xor edi, edi
cmp byte [esp + 0xa8], 0x4b
mov eax, dword [esp + 0xb0]
jne 0x483363
mov edi, dword [esp + 0xac]
cmp dword [esp + 0xc], 0
mov dword [esp + 0x290], edi
mov dword [esp + 0x2d0], eax
mov dword [esp + 0x294], eax
je 0x4833e9
mov ecx, dword [esp + 0x124]
mov eax, dword [ecx + 0x20]
mov edx, dword [ecx + 0x24]
mov ecx, dword [esp + 0x140]
sub edx, ecx
jae 0x483711
xor edi, edi
mov cl, 0x13
mov edx, eax
jmp 0x4837bb
mov eax, dword [esp + 0x4c]
mov byte [eax + 8], 0x42
mov dword [eax + 0xc], 0
mov dword [eax + 4], 0
mov dword [eax], 2
jmp 0x4837e0
lock dec dword [ecx]
mov esi, eax
jne 0x4833d3
call fcn.0047a9d0
lock inc dword [esi - 8]
jle 0x484d5a
add esi, 0xfffffff8
mov dword [esp + 0xc], esi
jmp 0x482a69
movsd xmm1, qword [esp + 0x2f0]
mov eax, dword [esp + 0x2cc]
movsd xmm0, qword [esp + 0x2f8]
movsd xmm3, qword [esp + 0x2e0]
movsd xmm2, qword [esp + 0x2c4]
xor edi, edi
mov dword [esp + 8], 0x2f
movsd qword [esp + 0x170], xmm1
movsd xmm1, qword [esp + 0x2e8]
mov dword [esp + 0x190], eax
mov eax, dword [esp + 0x2c0]
movsd qword [esp + 0x178], xmm0
movsd qword [esp + 0x160], xmm3
movsd qword [esp + 0x188], xmm2
movsd qword [esp + 0x168], xmm1
movq xmm1, qword [esp + 0x2b8]
mov dword [esp + 0x1a0], eax
mov dword [esp + 0xc], eax
movq qword [esp + 0x198], xmm1
mov eax, dword [esp + 0x1c0]
xor eax, 0x2f
or eax, dword [esp + 0x1c4]
je 0x4834fe
cmp dword [esp + 0x210], 0
je 0x4834ad
mov ecx, dword [esp + 0x214]
mov edx, 2
call fcn.00404ac0
cmp dword [esp + 0x21c], 0
je 0x4834c8
mov ecx, dword [esp + 0x220]
mov edx, 8
call fcn.00404ac0
cmp dword [esp + 0x228], 0
je 0x4834e3
mov ecx, dword [esp + 0x22c]
mov edx, 2
call fcn.00404ac0
cmp dword [esp + 0x234], 0
je 0x4834fe
mov ecx, dword [esp + 0x238]
mov edx, 8
call fcn.00404ac0
mov eax, dword [esp + 8]
movsd xmm0, qword [esp + 0x178]
lea ecx, [esp + 0x1d8]
mov dword [esp + 0x1c4], edi
movq xmm1, qword [esp + 0x168]
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x1c8], esi
mov dword [esp + 0x1cc], eax
mov dword [esp + 0x1d4], 0
mov dword [esp + 0x1d0], 0
movsd qword [ecx + 0x18], xmm0
movsd xmm0, qword [esp + 0x170]
mov eax, dword [esp + 0x13c]
movq qword [ecx + 8], xmm1
movsd qword [ecx + 0x10], xmm0
movsd xmm0, qword [esp + 0x160]
movsd qword [ecx], xmm0
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x154]
movsd xmm0, qword [esp + 0x188]
mov dword [esp + 0x1fc], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x1ac]
mov dword [esp + 0x204], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x208], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x210], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x214], eax
mov eax, dword [esp + 0x118]
mov dword [esp + 0x218], eax
mov eax, dword [esp + 0x190]
movsd qword [ecx + 0x44], xmm0
movsd xmm0, qword [esp + 0x198]
mov dword [ecx + 0x4c], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x228], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x22c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x230], eax
mov eax, dword [esp + 0x1a0]
movsd qword [ecx + 0x5c], xmm0
mov dword [ecx + 0x64], eax
movzx eax, byte [esp + 0x2b]
mov ecx, dword [esp + 0x15c]
mov byte [esp + 0x240], al
movzx eax, byte [esp + 0x8c]
mov edx, ecx
xor edx, 0x2e
or edx, dword [esp + 0x158]
mov byte [esp + 0x241], al
mov eax, dword [esp + 0xc]
mov word [esp + 0x242], ax
mov eax, dword [esp + 0x140]
mov dword [esp + 0x244], eax
mov eax, dword [esp + 0x120]
mov dword [esp + 0x248], eax
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x24c], eax
movzx eax, byte [esp + 0xa4]
mov byte [esp + 0x250], al
movzx eax, byte [esp + 0xa7]
mov byte [esp + 0x251], al
movzx eax, byte [esp + 0x5f]
mov byte [esp + 0x252], al
movzx eax, byte [esp + 0xa6]
mov byte [esp + 0x253], al
movzx eax, byte [esp + 0xa5]
mov byte [esp + 0x254], al
movzx eax, byte [esp + 0x5e]
mov byte [esp + 0x255], al
jne 0x483723
lea eax, [esp + 0x1b0]
push 0x108
push eax
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x483877
add eax, ecx
cmp edx, 4
jae 0x48375b
mov ecx, eax
xor edi, edi
mov bl, 0x13
shr ecx, 8
jmp 0x483797
mov eax, ecx
mov dword [esp + 0x4c], ebx
and al, 0x3f
cmp al, 0xc
je 0x483898
and ecx, 0x3f
jne 0x4838c6
mov edi, dword [esp + 0x84]
shr edi, 8
xor esi, esi
mov cl, 1
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x34], 0
jmp 0x483940
movzx ecx, byte [esp + 0x278]
mov dword [esp + 0x50], edi
lea edi, [edx - 4]
mov byte [esp + 0x8c], 4
mov byte [esp + 0x2b], cl
lea ecx, [eax + 4]
mov dword [esp + 4], ecx
mov ecx, dword [eax]
cmp ecx, 0xffffffef
jbe 0x48387f
cmp ecx, 0xffffffff
je 0x4839a6
xor ecx, ecx
mov bl, 0x10
xor edi, edi
mov byte [esp + 0x60], al
mov eax, edi
mov word [esp + 0x65], di
mov dword [esp + 0x61], ecx
shld edi, ecx, 8
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
shr eax, 0x10
mov byte [esp + 0x67], al
mov edx, dword [esp + 0x60]
shl esi, 8
movzx eax, cl
or eax, esi
mov esi, dword [esp + 0x4c]
mov dword [esi + 8], eax
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], edi
mov dword [esi + 4], 0
mov dword [esi], 2
mov eax, dword [esp + 0x2a0]
lock dec dword [eax]
jne 0x4837f8
mov ecx, dword [esp + 0x2a0]
call fcn.0047a9d0
mov eax, dword [esp + 0x1c0]
xor eax, 0x2f
or eax, dword [esp + 0x1c4]
je 0x483877
cmp dword [esp + 0x210], 0
je 0x483826
mov ecx, dword [esp + 0x214]
mov edx, 2
call fcn.00404ac0
cmp dword [esp + 0x21c], 0
je 0x483841
mov ecx, dword [esp + 0x220]
mov edx, 8
call fcn.00404ac0
cmp dword [esp + 0x228], 0
je 0x48385c
mov ecx, dword [esp + 0x22c]
mov edx, 2
call fcn.00404ac0
cmp dword [esp + 0x234], 0
je 0x483877
mov ecx, dword [esp + 0x238]
mov edx, 8
call fcn.00404ac0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ecx
cmp edi, eax
jae 0x483a96
mov edx, dword [esp + 4]
mov cl, 0x13
xor edi, edi
mov ebx, edx
jmp 0x4837bb
mov eax, dword [esp + 0x124]
mov ebx, dword [esp + 0x2a8]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
sub esi, ebx
jae 0x4838df
mov al, 0x13
mov dword [esp + 0xaf], ecx
mov dword [esp + 0xb3], 0
jmp 0x4838ff
mov dword [esp + 0x84], eax
xor esi, esi
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x34], 0
xor edx, edx
jmp 0x483940
movzx eax, byte [esp + 0x278]
mov byte [esp + 0xc], al
movzx edi, al
mov eax, dword [esp + 0x84]
mul edi
jno 0x483a13
mov al, 0x35
mov dword [esp + 0xc], eax
movzx ecx, byte [esp + 0xb2]
movzx edi, word [esp + 0xb0]
movzx eax, byte [esp + 0xaf]
xor ebx, ebx
mov esi, 1
shl ecx, 0x10
mov dword [esp + 0x84], eax
or edi, ecx
mov ecx, dword [esp + 0xb3]
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0xc]
mov eax, edx
movzx ecx, cl
shl edi, 8
shl eax, 8
or ecx, eax
movzx eax, byte [esp + 0x84]
or eax, edi
or esi, ebx
je 0x48397f
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x34]
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0x88]
shld edi, edx, 8
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
jmp 0x4837d3
mov ebx, dword [esp + 0x4c]
cmp ecx, 1
jne 0x4836f6
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x298], eax
mov dword [esp + 0x29c], ecx
jmp 0x4836f6
cmp edi, 8
jae 0x483a6c
mov eax, dword [esp + 4]
xor edi, edi
mov bl, 0x13
mov dword [esp + 0x3f], eax
movzx eax, byte [esp + 0x42]
movq xmm0, qword [esp + 0x38]
mov byte [esp + 0xb2], al
movzx eax, word [esp + 0x40]
movd esi, xmm0
mov word [esp + 0xb0], ax
movq qword [esp + 0xa8], xmm0
shufps xmm0, xmm0, 0x55
mov dword [esp + 0xb3], 0
movd eax, xmm0
shld eax, esi, 8
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xaf]
mov ecx, eax
shr ecx, 8
jmp 0x483797
mov edx, esi
add ecx, ebx
sub edx, eax
jb 0x4838b0
dec edi
cmp edi, 7
ja 0x483c49
mov ebx, dword [esp + 0x34]
add ecx, eax
add ebx, dword [edi*4 + 0x484f78]
jmp ebx
mov edi, dword [esp + 4]
cmp dword [edi + 4], 0
jne 0x483af2
mov edi, dword [edi]
add eax, 0xc
add edx, 0xfffffff4
mov byte [esp + 0x8c], 8
mov dword [esp + 4], eax
mov eax, edi
mov edi, edx
cmp edi, eax
jb 0x483889
mov edx, dword [esp + 4]
cmp eax, 2
jae 0x483aa3
mov cl, 0x13
jmp 0x483abd
movzx edi, word [edx]
mov dword [esp + 0x120], eax
mov eax, edi
add eax, 0xfffffffa
cmp ax, 0xfffc
jae 0x483ac4
movzx edx, di
mov cl, 0x11
xor edi, edi
jmp 0x4833a1
mov eax, dword [esp + 0x120]
add edx, 2
cmp di, 4
lea eax, [eax - 2]
jbe 0x483afd
test eax, eax
je 0x483a9f
cmp dword [esp + 0x120], 3
jne 0x483b77
mov edx, dword [esp + 4]
add edx, 3
jmp 0x483a9f
xor ecx, ecx
mov bl, 0x35
xor edi, edi
jmp 0x483797
mov dword [esp + 0xc], edx
cmp ecx, 0xfffffff0
mov dword [esp + 0x4c], ebx
jb 0x483b5b
cmp eax, 8
jae 0x483c80
mov esi, dword [esp + 0xc]
mov al, 0x13
mov dword [esp + 0xaf], esi
and esi, 0xffffff00
movq xmm0, qword [esp + 0xa8]
movdqa xmm1, xmm0
movdqa xmmword [esp + 0x310], xmm0
movd ecx, xmm0
shufps xmm1, xmm0, 0x55
movzx edx, byte [esp + 0x317]
movd ebx, xmm1
shld ebx, ecx, 8
mov ecx, esi
jmp 0x483d87
cmp eax, 4
jae 0x483ca0
mov edx, dword [esp + 0xc]
mov al, 0x13
mov ecx, edx
and ecx, 0xffffff00
jmp 0x483d87
mov edx, dword [esp + 4]
lea ebx, [edx + 4]
movzx eax, byte [edx + 2]
mov dword [esp + 0x20], ebx
mov dword [esp + 0xc], ebx
cmp byte [edx + 3], 0
mov byte [esp + 0x2b], al
je 0x483d99
mov cl, 0x41
jmp 0x483dae
movzx eax, byte [esp + 0xc]
movzx ecx, word [esp + 0xac]
mov byte [esp + 0xa8], al
movzx eax, byte [esp + 0xae]
mov edx, dword [esp + 0xa8]
shl eax, 0x10
or ecx, eax
mov al, 0x17
mov dword [esp + 0x34], ecx
mov dword [esp + 0xc], eax
jmp 0x483903
mov ecx, eax
mov eax, dword [esp + 0xc]
cmp dword [eax + 4], 0
jne 0x483d83
mov edx, dword [eax]
add eax, 8
add ecx, 0xfffffff8
mov dword [esp + 0x6c], eax
mov eax, edx
jmp 0x483cba
mov ecx, eax
mov eax, dword [esp + 0xc]
add ecx, 0xfffffffc
lea edx, [eax + 4]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x6c], edx
mov eax, dword [eax]
sub ecx, eax
jb 0x483d5c
test eax, eax
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0xc], edi
mov dword [esp + 0x11c], eax
je 0x483d5c
mov eax, dword [esp + 0x6c]
movzx eax, byte [eax]
test al, al
mov byte [esp + 0xa7], al
je 0x483dac
mov eax, dword [esp + 0x11c]
cmp word [esp + 0xc], 4
mov byte [esp + 0x5f], 1
lea ecx, [eax - 1]
mov eax, dword [esp + 0x6c]
lea eax, [eax + 1]
jb 0x483d41
test ecx, ecx
je 0x483e07
mov eax, dword [esp + 0x11c]
lea ecx, [eax - 2]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x24], ecx
movzx eax, byte [eax + 1]
test al, al
mov byte [esp + 0x5f], al
je 0x483e00
mov eax, dword [esp + 0x6c]
add eax, 2
test ecx, ecx
je 0x483e07
lea edi, [eax + 1]
cmp ecx, 1
mov dword [esp + 0x20], edi
jne 0x483db3
mov edx, edi
jmp 0x483a9f
mov edx, dword [esp + 0x6c]
jmp 0x483a9f
mov al, 0x35
xor ecx, ecx
movzx edx, dl
movd esi, xmm0
xor edi, edi
or edx, ecx
mov ecx, eax
jmp 0x4837bb
mov edx, dword [esp + 0x120]
mov ebx, dword [esp + 0x4c]
lea eax, [edx - 4]
jmp 0x483b01
mov cl, 0x1a
jmp 0x4833a1
movzx edx, byte [eax]
mov edi, ecx
add edi, 0xfffffffe
mov dword [esp + 0x24], edi
je 0x483e04
mov dh, byte [eax + 1]
lea ebx, [eax + 3]
mov dword [esp + 0x20], ebx
mov dword [esp + 4], ebx
mov byte [esp + 0xa6], dh
mov dh, byte [eax + 2]
test dh, dh
mov byte [esp + 0xa5], dh
je 0x483e10
test dl, dl
setne byte [esp + 0xa4]
cmp ecx, 3
jne 0x483e14
mov edx, dword [esp + 4]
mov cl, 0x13
xor edi, edi
jmp 0x4833a1
mov cl, 0x1b
jmp 0x483dae
add eax, 2
mov cl, 0x13
xor edi, edi
jmp 0x48339f
mov cl, 0x1c
jmp 0x483dae
movzx edx, byte [eax + 3]
test dl, dl
mov byte [esp + 0x5e], dl
je 0x483e58
movzx ebx, byte [esp + 0x5e]
lea edx, [ecx - 4]
lea edi, [eax + 4]
mov dword [esp + 0x13c], edi
dec bl
movzx ebx, bl
sub edx, ebx
mov edi, ebx
mov dword [esp + 0x154], ebx
jae 0x483e5f
mov eax, dword [esp + 0x13c]
mov cl, 0x13
xor edi, edi
mov edx, eax
mov ebx, eax
jmp 0x4837bb
mov cl, 0x1d
jmp 0x483dae
mov edi, dword [esp + 0x13c]
mov ebx, dword [esp + 0x154]
cmp word [esp + 0xc], 4
mov dword [esp + 0x128], 0
mov dword [esp + 0x12c], 8
mov dword [esp + 0x130], 0
lea edi, [edi + ebx]
mov dword [esp + 0x20], edi
mov dword [esp + 4], edi
mov dword [esp + 0x24], edx
ja 0x483f7d
test edx, edx
je 0x4840c1
add eax, ecx
mov dword [esp + 8], 0
mov dword [esp + 0x58], 8
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 4]
xor ebx, ebx
cmp byte [edi + ebx], 0
je 0x483ee1
lea ecx, [edi + ebx + 1]
inc ebx
cmp ecx, eax
jne 0x483ecd
jmp 0x48407d
mov eax, ebx
lea ecx, [edi + ebx + 1]
not eax
mov dword [esp + 0x20], ecx
add edx, eax
test ebx, ebx
mov dword [esp + 0x24], edx
je 0x4843ac
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x128]
jne 0x483f2e
mov edx, dword [esp + 8]
lea ecx, [esp + 0x128]
call fcn.004186a0
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x58], eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x2c], edi
mov eax, ecx
inc ecx
shl eax, 4
mov dword [esp + 8], ecx
mov dword [edx + eax + 4], 0
mov dword [edx + eax], 0x1f
mov dword [edx + eax + 8], edi
mov dword [edx + eax + 0xc], ebx
mov dword [esp + 0x130], ecx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 4], eax
add eax, edx
test edx, edx
jne 0x483ec3
jmp 0x4840c1
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x20]
call fcn.00486dd0
movzx eax, byte [esp + 0xa8]
cmp al, 0x4b
mov dword [esp + 0x18], eax
jne 0x484083
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb0]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xec], eax
mov dword [esp + 0x58], edx
test ecx, ecx
je 0x4840f0
mov eax, ecx
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 4]
mov dword [esp + 0x54], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x118], ecx
lea ecx, [edx + eax]
dec eax
inc edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], eax
mov dword [esp + 4], edx
xor ecx, ecx
mov eax, dword [esp + 4]
cmp ecx, 0x3f
movzx eax, byte [eax - 1]
mov byte [esp + 8], al
jne 0x484024
cmp byte [esp + 8], 2
jae 0x4840f8
movzx ebx, byte [esp + 8]
xor edi, edi
mov eax, 0
mov edx, ebx
and dl, 0x7f
movzx edx, dl
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
cmovne edx, eax
or dword [esp + 0x80], edi
or dword [esp + 0x54], edx
test bl, bl
jns 0x484170
add ecx, 7
inc dword [esp + 4]
add dword [esp + 0x50], 0xffffffff
jb 0x484008
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0
mov dword [esp + 4], eax
jmp 0x4840f0
mov dword [esp + 4], edi
jmp 0x4840c1
movzx eax, byte [esp + 0xab]
movzx esi, word [esp + 0xa9]
mov edi, dword [esp + 0xb4]
mov bl, 1
shl eax, 0x10
or esi, eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x60], eax
mov dword [esp + 4], eax
mov dword [esp + 0x64], edi
jmp 0x484127
mov eax, dword [esp + 4]
mov dword [esp + 0x58], 2
xor edi, edi
mov dword [esp + 0xec], 0
xor ebx, ebx
mov dword [esp + 0x60], eax
mov al, 0x13
mov dword [esp + 0x64], 0
mov dword [esp + 0x18], eax
jmp 0x484127
mov al, 0x13
mov dword [esp + 0x18], eax
jmp 0x48410e
mov eax, dword [esp + 4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
mov al, 6
mov dword [esp + 0x18], eax
mov eax, dword [esp + 4]
movzx esi, byte [esp + 8]
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0
cmp dword [esp + 0x128], 0
je 0x484142
mov ecx, dword [esp + 0x12c]
mov edx, 8
call fcn.00404ac0
cmp dword [esp + 0xec], 0
sete al
or bl, al
jne 0x48415f
mov ecx, dword [esp + 0x58]
mov edx, 2
call fcn.00404ac0
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
jmp 0x4837bb
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x50]
or ecx, dword [esp + 0x80]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
je 0x484387
cmp dword [esp + 0x118], 0
je 0x484d2a
movzx eax, byte [esp + 0x8c]
movzx ecx, byte [esp + 0x2b]
mov dword [esp + 0x10], 0
mov dword [esp + 0xe4], 8
mov dword [esp + 0x114], 0
mov dword [esp + 0xe8], 0
shl eax, 8
lea eax, [eax + ecx + 0x50000]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x118]
lea eax, [eax*4]
mov dword [esp + 0x14], eax
add dword [esp + 0x114], 1
mov dword [esp + 8], 0x2e
mov dword [esp + 0x50], 0
adc dword [esp + 0xe8], 0
xor ebx, ebx
mov eax, dword [esp + 0x58]
movzx eax, word [eax + ebx + 2]
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x20]
push eax
push dword [esp + 0xa4]
call fcn.00487160
add esp, 8
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0xbc]
or eax, dword [esp + 0xac]
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x2c], eax
mov dword [esp + 4], ecx
jne 0x48436d
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
cmp word [eax + ebx], 1
cmove ecx, dword [esp + 4]
cmove edx, edi
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 8]
cmove edx, dword [esp + 0x2c]
cmove ecx, dword [esp + 0x18]
add ebx, 4
cmp dword [esp + 0x14], ebx
mov dword [esp + 0x50], edx
mov dword [esp + 8], ecx
jne 0x48421a
mov eax, dword [esp + 8]
xor eax, 0x2e
or eax, dword [esp + 0x50]
je 0x484d2a
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x128]
jne 0x484309
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x128]
call fcn.004186a0
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x130]
mov dword [esp + 0xe4], eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xe4]
mov edi, dword [esp + 8]
mov eax, ecx
inc ecx
shl eax, 4
mov dword [esp + 0x10], ecx
mov dword [edx + eax], edi
mov edi, dword [esp + 0x50]
mov dword [edx + eax + 4], edi
mov edi, dword [esp + 0x1c]
mov dword [edx + eax + 8], edi
mov edi, dword [esp + 0x30]
mov dword [edx + eax + 0xc], edi
mov edi, dword [esp + 0x114]
mov edx, dword [esp + 0xe8]
mov dword [esp + 0x130], ecx
cmp edi, dword [esp + 0x54]
sbb edx, dword [esp + 0x80]
jb 0x4841f8
mov dword [esp + 0x50], 0
jmp 0x4843ca
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 4]
mov dword [esp + 0x64], edi
xor ebx, ebx
shr esi, 8
mov dword [esp + 0x60], eax
jmp 0x484127
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
mov dword [esp + 0x50], 0
jmp 0x4845ef
mov dword [esp + 0x58], 2
mov dword [esp + 0x118], 0
mov dword [esp + 0xec], 0
cmp word [esp + 0xc], 5
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
jae 0x4845ef
test esi, esi
mov eax, 0x2e
mov ecx, 0x1f
cmove ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x484c6f
mov ecx, dword [esp + 4]
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x54], 8
add ecx, eax
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 4]
xor ebx, ebx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x1c]
cmp byte [edx + ebx], 0
je 0x484461
mov edx, dword [esp + 0x1c]
lea edx, [edx + ebx + 1]
inc ebx
cmp edx, ecx
jne 0x484445
jmp 0x48472f
mov ecx, ebx
not ecx
add eax, ecx
mov ecx, dword [esp + 0x1c]
test ebx, ebx
lea ecx, [ecx + ebx + 1]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
je 0x484ced
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x20]
push ebx
push dword [esp + 0x20]
call fcn.00479a10
add esp, 8
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xb4]
mov edi, dword [esp + 0xbc]
mov dword [esp + 0x80], eax
xor eax, 0x2e
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x2c], edx
or eax, ecx
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x18], eax
mov dword [esp + 4], ecx
je 0x484d0a
lea eax, [esp + 0xc0]
mov ecx, dword [esp + 0x30]
movsd xmm1, qword [eax + 0x10]
movq xmm0, qword [eax + 0x18]
movsd xmm2, qword [eax]
cmp ecx, dword [esp + 0x38]
movsd qword [esp + 0x100], xmm1
movq xmm1, qword [eax + 8]
movq qword [esp + 0x108], xmm0
movsd qword [esp + 0xf0], xmm2
movq qword [esp + 0xf8], xmm1
jne 0x48454b
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x38]
call fcn.00479d30
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov dword [esp + 0x30], ecx
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x54]
mov ecx, dword [esp + 0xa0]
imul eax, edx, 0x38
inc edx
mov dword [ebx + eax + 4], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x30], edx
mov dword [ebx + eax], ecx
mov ecx, dword [esp + 0x18]
mov dword [ebx + eax + 8], ecx
mov ecx, dword [esp + 0x2c]
mov dword [ebx + eax + 0xc], ecx
mov ecx, dword [esp + 4]
mov dword [ebx + eax + 0x10], ecx
mov dword [ebx + eax + 0x14], edi
movsd xmm0, qword [esp + 0xf0]
movq xmm1, qword [esp + 0xf8]
movsd qword [ebx + eax + 0x18], xmm0
movq qword [ebx + eax + 0x20], xmm1
movsd xmm0, qword [esp + 0x100]
movsd qword [ebx + eax + 0x28], xmm0
movq xmm0, qword [esp + 0x108]
movq qword [ebx + eax + 0x30], xmm0
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c], edx
mov dword [esp + 4], ecx
add ecx, eax
test eax, eax
jne 0x484433
jmp 0x484c6f
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x20]
call fcn.00486dd0
movzx eax, byte [esp + 0xa8]
cmp al, 0x4b
mov dword [esp + 0x18], eax
jne 0x4846e6
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb0]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], edx
test ecx, ecx
je 0x484727
mov eax, ecx
mov ecx, dword [esp + 0xb4]
mov esi, dword [esp + 4]
mov dword [esp + 0x80], 0
mov dword [esp + 0xa0], 0
mov ebx, 0
mov dword [esp + 0x54], ecx
lea ecx, [esi + eax]
dec eax
inc esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 8], eax
xor ecx, ecx
movzx eax, byte [esi - 1]
cmp ecx, 0x3f
mov edx, esi
mov byte [esp + 0x70], al
jne 0x484692
cmp byte [esp + 0x70], 2
jae 0x48473c
movzx eax, byte [esp + 0x70]
xor edi, edi
mov edx, eax
and dl, 0x7f
movzx edx, dl
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
cmovne edx, ebx
or dword [esp + 0xa0], edi
or dword [esp + 0x80], edx
test al, al
jns 0x48476c
add ecx, 7
inc esi
add dword [esp + 8], 0xffffffff
jb 0x484678
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0
mov dword [esp + 4], eax
jmp 0x484727
movzx eax, byte [esp + 0xab]
movzx esi, word [esp + 0xa9]
mov edi, dword [esp + 0xb4]
mov bl, 1
shl eax, 0x10
or esi, eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x60], eax
mov dword [esp + 4], eax
mov dword [esp + 0x64], edi
jmp 0x484cb0
mov al, 0x13
mov dword [esp + 0x18], eax
jmp 0x48474e
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], eax
jmp 0x484c6f
mov eax, dword [esp + 8]
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], eax
mov al, 6
mov dword [esp + 0x18], eax
mov eax, dword [esp + 4]
movzx esi, byte [esp + 0x70]
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0
jmp 0x484cb0
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 8]
mov dword [esp + 0x20], esi
or ecx, dword [esp + 0xa0]
mov dword [esp + 0x24], eax
je 0x484bee
cmp dword [esp + 0x54], 0
je 0x484d43
movzx eax, byte [esp + 0x8c]
movzx ecx, byte [esp + 0x2b]
mov dword [esp + 0x110], 0
mov dword [esp + 0x144], 8
mov dword [esp + 0x14c], 0
mov dword [esp + 0x148], 0
shl eax, 8
lea ebx, [eax + ecx + 0x50000]
mov eax, dword [esp + 0x54]
lea eax, [eax*4]
mov dword [esp + 0x114], eax
add dword [esp + 0x14c], 1
pxor xmm0, xmm0
mov dword [esp + 0xe8], 0x2e
mov dword [esp + 0xe4], 0
mov dword [esp + 0x150], 0
mov dword [esp + 0x70], 0
mov dword [esp + 8], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x98], 0
movdqa xmmword [esp + 0x300], xmm0
adc dword [esp + 0x148], 0
xor esi, esi
jmp 0x4848a0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x70], eax
mov dword [esp + 8], ecx
add esi, 4
cmp dword [esp + 0x114], esi
je 0x484aef
mov eax, dword [esp + 8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + esi + 2]
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x20]
push eax
push ebx
call fcn.00487160
add esp, 8
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0xbc]
or eax, dword [esp + 0xac]
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x2c], eax
mov dword [esp + 4], ecx
jne 0x484c9b
mov eax, dword [esp + 0x1c]
movzx ecx, word [eax + esi]
dec ecx
cmp ecx, 4
ja 0x484880
mov ecx, dword [ecx*4 + 0x484f1c]
mov eax, dword [esp + 4]
add ecx, dword [esp + 0x34]
shr eax, 8
jmp ecx
mov eax, dword [esp + 0xe8]
xor eax, 0x2e
or eax, dword [esp + 0xe4]
je 0x484d43
mov eax, dword [esp + 0x110]
cmp eax, dword [esp + 0x38]
jne 0x484b39
mov edx, dword [esp + 0x110]
lea ecx, [esp + 0x38]
call fcn.00479d30
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x144], eax
mov dword [esp + 0x110], ecx
mov ecx, dword [esp + 0x110]
mov edx, dword [esp + 0x144]
mov esi, dword [esp + 0xe4]
movdqa xmm0, xmmword [esp + 0x300]
imul eax, ecx, 0x38
inc ecx
mov dword [edx + eax + 4], esi
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x110], ecx
mov dword [edx + eax], esi
mov esi, dword [esp + 0x1a8]
mov dword [edx + eax + 8], esi
mov esi, dword [esp + 0x150]
mov dword [edx + eax + 0xc], esi
mov esi, dword [esp + 0x70]
mov dword [edx + eax + 0x10], esi
mov esi, dword [esp + 8]
mov dword [edx + eax + 0x14], esi
mov esi, dword [esp + 0x90]
mov dword [edx + eax + 0x1c], esi
mov esi, dword [esp + 0x94]
mov dword [edx + eax + 0x18], esi
mov esi, dword [esp + 0x98]
mov dword [edx + eax + 0x24], esi
mov esi, dword [esp + 0x9c]
mov dword [edx + eax + 0x20], esi
mov esi, dword [esp + 0x14c]
movdqu xmmword [edx + eax + 0x28], xmm0
mov edx, dword [esp + 0x148]
mov dword [esp + 0x40], ecx
cmp esi, dword [esp + 0x80]
sbb edx, dword [esp + 0xa0]
jb 0x4847ec
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0x2e
mov dword [esp + 0x70], 0
movsd xmm0, qword [esp + 0x128]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x130]
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x14]
movsd qword [esp + 0x188], xmm0
movsd xmm0, qword [esp + 0x38]
add eax, dword [esp + 0x11c]
mov dword [esp + 0x190], edx
mov dword [esp + 0x1a0], ecx
movsd qword [esp + 0x198], xmm0
xorps xmm0, xmm0
mov dword [esp + 0x6c], eax
movaps xmmword [esp + 0x160], xmm0
movaps xmmword [esp + 0x170], xmm0
jmp 0x48347f
mov eax, dword [esp + 4]
mov dword [esp + 0x1c], 2
xor edi, edi
mov dword [esp + 0x60], eax
mov al, 0x13
mov dword [esp + 0x64], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x30], 0
xor ebx, ebx
jmp 0x484cb0
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 4]
xor ebx, ebx
mov dword [esp + 0x60], eax
shr esi, 8
mov dword [esp + 0x64], edi
cmp dword [esp + 0x38], 0
je 0x484cc5
mov ecx, dword [esp + 0x3c]
mov edx, 8
call fcn.00404ac0
cmp dword [esp + 0x30], 0
sete al
or bl, al
je 0x484cd8
xor ebx, ebx
jmp 0x484127
mov ecx, dword [esp + 0x1c]
mov edx, 2
call fcn.00404ac0
xor ebx, ebx
jmp 0x484127
mov dword [esp + 0x1c], 2
mov dword [esp + 0x30], 0
mov dword [esp + 0x54], 0
jmp 0x484c06
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 4]
mov dword [esp + 0x1c], 2
shr esi, 8
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edi
jmp 0x484c8f
mov edx, 0x2b
mov ecx, 0x5063db
push 0x502b90
call fcn.0040db80
add esp, 4
jmp 0x484d5a
mov edx, 0x2b
mov ecx, 0x5063db
push 0x502b80
call fcn.0040db80
add esp, 4
ud2