Function at 0x40b891
Capabilities:
Authenticate hmac
Encode data using base64
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x28e0
call fcn.005db670
mov esi, esp
mov dword [esi + 0x28c8], ebp
mov bl, byte [ebp + 0x18]
lea eax, [esi + 0x28d0]
mov dword [eax - 4], esp
mov dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x40fa90
mov ecx, dword fs:[0]
mov dword [eax], ecx
mov dword fs:[0], eax
lea eax, [esi + 0x12b0]
push 0x208
push 0
push eax
call fcn.005e2800
add esp, 0xc
test bl, bl
je 0x40b99b
xorpd xmm0, xmm0
lea edi, [esi + 0xa0]
movupd xmmword [edi + 0x2c], xmm0
movapd xmmword [edi + 0x20], xmm0
movapd xmmword [edi + 0x10], xmm0
movapd xmmword [edi], xmm0
mov dword [esi + 0x20c8], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0xa
push edi
push eax
call fcn.005f5ac6
add esp, 0xc
push edi
call fcn.005ff144
add esp, 4
mov edi, eax
dec eax
mov dword [esi], eax
js 0x40b98f
lea ebx, [esi + 0x12b2]
movzx eax, word [esi + edi*2 + 0x9e]
mov word [ebx - 2], ax
call fcn.005fe94b
mov ecx, eax
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
push 0xa
lea eax, [esi + 0x20c8]
push eax
push ecx
call fcn.005f5a8f
add esp, 0xc
movzx eax, word [esi + 0x20c8]
mov word [ebx], ax
add ebx, 4
dec edi
jne 0x40b942
mov eax, dword [esi]
mov word [esi + eax*4 + 0x12b4], 0
lea eax, [esi + 0x20c8]
push 0x800
push 0
push eax
call fcn.005e2800
add esp, 0xc
xorpd xmm0, xmm0
movsd xmm4, qword [0x612460]
movsd xmm5, qword [0x612468]
movsd xmm6, qword [0x612160]
movsd xmm7, qword [0x612470]
xorpd xmm3, xmm3
movapd xmm1, xmm3
mulsd xmm1, qword [0x612448]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612450]
mulsd xmm2, xmm3
addsd xmm2, qword [0x612458]
divsd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm2, xmm3
mulsd xmm2, xmm4
addsd xmm2, xmm1
movapd xmm0, xmm5
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
addsd xmm3, xmm6
ucomisd xmm7, xmm3
ja 0x40b9d9
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x40ba7d
invalid
lea eax, [0x40ba4a]
mov dword [esi + 0x20], eax
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x40ba98
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x40ba64]
mov dword [esi + 0x1c], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x10], eax
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x18], ecx
mov edi, 0xff
xor ecx, ecx
xor ebx, ebx
xor edx, edx
inc edx
cmp edi, 2
jb 0x40bb08
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, edi
jb 0x40bb01
mov dword [esi + 0xc], edx
mov dword [esi], 0xc
mov dword [esi + 0x14], edi
cmp ebx, 3
ja case.default.0x40bb19
jmp dword [ebx*4 + 0x6125d8]
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0xa0
mov eax, dword [esi + 8]
jmp 0x40bb51
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0xa0
mov eax, dword [esi + 0x18]
jmp 0x40bb51
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0xa0
mov eax, dword [esi + 0x10]
jmp 0x40bb78
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0xa0
mov eax, dword [esi + 8]
mov al, ah
jmp 0x40bb78
movzx eax, cl
mov al, byte [esi + eax + 0xa0]
mov ecx, dword [esi + 0x1c]
add ecx, ebx
add ecx, 0xfffffffc
add al, byte [ecx]
inc ebx
movzx edi, al
add al, 0x18
cmp ebx, 0x17
mov ecx, 0
cmova ebx, ecx
movzx ecx, al
cmovbe ecx, edi
movzx edx, cl
mov eax, dword [esi + 0xc]
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edi, dword [esi]
dec edi
je 0x40bbb2
mov dword [esi], edi
mov edi, dword [esi + 0x14]
cmp eax, edi
ja 0x40bb14
jmp 0x40bbbb
xor edx, edx
mov edi, dword [esi + 0x14]
div edi
mov eax, edx
cmp edi, eax
je 0x40bbe9
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
dec edi
jne 0x40baf6
mov ch, byte [esi + 0xa1]
mov al, byte [esi + 0xa5]
mov byte [esi], al
movzx edx, ch
mov edi, dword [esi + 4]
movzx eax, byte [esi + edi + 0xa0]
mov dword [esi + 4], eax
mov edi, dword [esi + 0x20]
mov bl, byte [edi]
mov dword [esi + 0x14], edx
mov dl, byte [esi + edx + 0xa0]
add dl, byte [esi + 0xa3]
mov bh, byte [edi + 1]
mov byte [esi + 0xc], dl
movzx edx, dl
mov al, byte [esi + edx + 0xa0]
mov byte [esi + 0x18], al
mov eax, edx
mov dword [esi + 0x1c], edx
movzx edx, byte [esi + 0xa7]
mov dword [esi + 0x10], edx
mov edx, dword [esi + 4]
movzx edi, byte [esi + edx + 0xa0]
mov dword [esi + 8], edi
mov cl, byte [esi + 0x18]
mov byte [esi + edx + 0xa0], cl
mov edi, dword [esi + 0x10]
mov dl, byte [esi + edi + 0xa0]
mov byte [esi + eax + 0xa0], dl
inc ch
movzx edx, ch
mov ch, byte [esi + edx + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov eax, dword [esi + 8]
mov byte [esi + edx + 0xa0], al
movzx edx, byte [esi + edi + 0xa0]
mov edi, dword [esi + 4]
movzx edi, byte [esi + edi + 0xa0]
add edi, edx
mov cl, byte [esi]
add cl, byte [esi + eax + 0xa0]
mov byte [esi], cl
movzx edx, cl
movzx edx, byte [esi + edx + 0xa0]
add edx, edi
add bh, 0x85
shl bl, 4
add bl, 0x10
or bl, bh
mov ecx, dword [esi + 0x1c]
movzx ecx, byte [esi + ecx + 0xa0]
mov edi, eax
add ecx, eax
mov eax, 0xff
and ecx, eax
mov ch, byte [esi + ecx + 0xa0]
xor ch, bl
and edx, eax
movzx edx, byte [esi + edx + 0xa0]
xor ch, byte [esi + edx + 0xa0]
mov dword [esi + 4], 0xfffffffc
mov cl, bl
mov al, byte [esi + 0xc]
mov edx, edi
add al, dl
mov edx, dword [esi + 4]
mov ebx, dword [esi + 0x20]
mov ah, byte [ebx + edx*2 + 0xa]
mov byte [esi + 0x10], ah
movzx edi, cl
mov dword [esi + 0x1c], edi
mov dword [esi + 4], edx
mov cl, byte [ebx + edx*2 + 0xb]
mov byte [esi + 0x24], cl
mov byte [esi + 0xc], al
movzx edi, al
mov cl, byte [esi + edi + 0xa0]
mov dword [esi + 0x18], edi
mov eax, dword [esi + 0x1c]
movzx ebx, byte [esi + eax + 0xa0]
mov dword [esi + 8], ebx
mov bl, byte [esi + 0x24]
mov byte [esi + eax + 0xa0], cl
movzx eax, ch
mov dword [esi + 0x28], eax
mov ch, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov eax, dword [esi + 0x14]
add eax, edx
add eax, 6
mov ecx, 0xff
and eax, ecx
mov ch, byte [esi + eax + 0xa0]
mov edx, dword [esi + 0x28]
mov byte [esi + edx + 0xa0], ch
mov ecx, dword [esi + 8]
mov byte [esi + eax + 0xa0], cl
movzx eax, byte [esi + edx + 0xa0]
mov edx, dword [esi + 0x1c]
movzx edi, byte [esi + edx + 0xa0]
add edi, eax
mov al, byte [esi]
add al, byte [esi + ecx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
mov dl, byte [esi + 0x10]
shl dl, 4
add dl, 0x10
add bl, 0x85
or bl, dl
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, ecx
mov edi, 0xff
and edx, edi
mov ch, byte [esi + edx + 0xa0]
xor ch, bl
and eax, edi
movzx eax, byte [esi + eax + 0xa0]
xor ch, byte [esi + eax + 0xa0]
movsx eax, ch
mov edx, dword [esi + 4]
mov word [esi + edx*2 + 0x7e], ax
inc edx
mov dword [esi + 4], edx
mov edi, dword [esi + 8]
jne 0x40bcfb
mov eax, dword [esi + 0x20]
mov dl, byte [eax + 0xa]
mov byte [esi + 0x1c], dl
mov al, byte [eax + 0xb]
mov byte [esi + 0x10], al
mov al, byte [esi + 0xc]
mov edx, edi
add al, dl
mov byte [esi + 0xc], al
movzx edx, bl
movzx edi, al
mov cl, byte [esi + edi + 0xa0]
mov dword [esi + 0x18], edx
movzx eax, byte [esi + edx + 0xa0]
mov dword [esi + 8], eax
mov byte [esi + edx + 0xa0], cl
movzx eax, ch
mov bl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], bl
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 4]
lea ebx, [edx + ecx]
add ebx, 6
mov edx, 0xff
and ebx, edx
mov dl, byte [esi + ebx + 0xa0]
mov byte [esi + eax + 0xa0], dl
mov ecx, dword [esi + 8]
mov byte [esi + ebx + 0xa0], cl
movzx eax, byte [esi + eax + 0xa0]
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov al, byte [esi]
add al, byte [esi + ecx + 0xa0]
mov byte [esi], al
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov al, byte [esi + 0x10]
add al, 0x85
mov bl, byte [esi + 0x1c]
shl bl, 4
add bl, 0x10
or bl, al
movzx edx, byte [esi + edi + 0xa0]
add edx, dword [esi + 8]
mov edi, 0xff
and edx, edi
mov dl, byte [esi + edx + 0xa0]
xor dl, bl
and ecx, edi
movzx ecx, byte [esi + ecx + 0xa0]
xor dl, byte [esi + ecx + 0xa0]
movsx ecx, dl
mov word [esi + 0x7e], cx
mov al, byte [esi + 0xc]
add al, byte [esi + 8]
mov byte [esi + 0xc], al
mov ecx, dword [esi + 0x20]
mov bh, byte [ecx + 0xc]
mov dh, byte [ecx + 0xd]
movzx ecx, bl
mov dword [esi + 0x10], ecx
movzx eax, al
mov dword [esi + 0x1c], eax
mov bl, byte [esi + eax + 0xa0]
movzx edi, byte [esi + ecx + 0xa0]
mov dword [esi + 8], edi
mov byte [esi + ecx + 0xa0], bl
movzx edi, dl
mov dl, byte [esi + edi + 0xa0]
mov byte [esi + eax + 0xa0], dl
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 4]
add ecx, eax
add ecx, 7
mov eax, 0xff
and ecx, eax
mov dl, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], dl
mov eax, dword [esi + 8]
mov byte [esi + ecx + 0xa0], al
add dh, 0x85
shl bh, 4
add bh, 0x10
or bh, dh
mov ecx, dword [esi + 0x1c]
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, eax
mov edx, eax
mov eax, 0xff
and ecx, eax
movzx eax, bh
mov dword [esi + 0x1c], eax
xor bh, byte [esi + ecx + 0xa0]
mov al, byte [esi]
add al, byte [esi + edx + 0xa0]
mov byte [esi], al
movzx ecx, byte [esi + edi + 0xa0]
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0xa0]
add edx, ecx
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov eax, 0xff
and ecx, eax
movzx ecx, byte [esi + ecx + 0xa0]
xor bh, byte [esi + ecx + 0xa0]
movsx ecx, bh
mov word [esi + 0x80], cx
mov al, byte [esi + 0xc]
add al, byte [esi + 8]
mov ecx, dword [esi + 0x20]
mov bl, byte [ecx + 0xe]
mov cl, byte [ecx + 0xf]
mov byte [esi + 0x10], cl
mov byte [esi + 0xc], al
movzx eax, al
mov dh, byte [esi + eax + 0xa0]
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x1c]
movzx edi, byte [esi + ecx + 0xa0]
mov dword [esi + 8], edi
mov byte [esi + ecx + 0xa0], dh
movzx ecx, bh
mov bh, byte [esi + ecx + 0xa0]
mov byte [esi + eax + 0xa0], bh
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 4]
add edx, eax
add edx, 8
mov edi, 0xff
and edx, edi
mov bh, byte [esi + edx + 0xa0]
mov byte [esi + ecx + 0xa0], bh
mov eax, dword [esi + 8]
mov byte [esi + edx + 0xa0], al
movzx ecx, byte [esi + ecx + 0xa0]
mov edx, dword [esi + 0x1c]
movzx edi, byte [esi + edx + 0xa0]
add edi, ecx
mov dl, byte [esi]
add dl, byte [esi + eax + 0xa0]
mov byte [esi], dl
movzx edx, dl
movzx ecx, byte [esi + edx + 0xa0]
add ecx, edi
mov dl, byte [esi + 0x10]
add dl, 0x85
shl bl, 4
add bl, 0x10
or bl, dl
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov eax, 0xff
and edx, eax
mov bh, byte [esi + edx + 0xa0]
xor bh, bl
and ecx, eax
movzx edx, byte [esi + ecx + 0xa0]
xor bh, byte [esi + edx + 0xa0]
movsx edx, bh
mov word [esi + 0x82], dx
mov eax, dword [esi + 0x14]
add eax, dword [esi + 4]
add al, 9
mov dword [esi + 0x14], eax
xor ecx, ecx
mov al, byte [esi + 0xc]
add al, byte [esi + 8]
mov dword [esi + 4], ecx
mov edx, dword [esi + 0x20]
mov cl, byte [edx + ecx*2 + 0x10]
mov byte [esi + 0x18], cl
movzx ecx, bl
mov dword [esi + 0x10], ecx
mov edi, dword [esi + 0x20]
mov edx, dword [esi + 4]
mov bl, byte [edi + edx*2 + 0x11]
mov byte [esi + 0xc], al
movzx eax, al
mov dword [esi + 0x1c], eax
mov dh, byte [esi + eax + 0xa0]
movzx edi, byte [esi + ecx + 0xa0]
mov dword [esi + 8], edi
mov byte [esi + ecx + 0xa0], dh
movzx ecx, bh
mov dh, byte [esi + ecx + 0xa0]
mov byte [esi + eax + 0xa0], dh
movzx edi, byte [esi + 0x14]
mov dh, byte [esi + edi + 0xa0]
mov byte [esi + ecx + 0xa0], dh
mov eax, dword [esi + 8]
mov byte [esi + edi + 0xa0], al
movzx eax, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 0x10]
movzx edi, byte [esi + ecx + 0xa0]
add edi, eax
mov al, byte [esi]
mov ecx, dword [esi + 8]
add al, byte [esi + ecx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
mov dl, byte [esi + 0x18]
shl dl, 4
add dl, 0x10
add bl, 0x85
or bl, dl
mov edx, dword [esi + 0x1c]
movzx edx, byte [esi + edx + 0xa0]
add edx, ecx
mov edi, 0xff
and edx, edi
mov bh, byte [esi + edx + 0xa0]
xor bh, bl
and eax, edi
movzx eax, byte [esi + eax + 0xa0]
xor bh, byte [esi + eax + 0xa0]
movsx eax, bh
mov edx, dword [esi + 4]
mov word [esi + edx*2 + 0x84], ax
mov eax, dword [esi + 0x14]
inc al
mov dword [esi + 0x14], eax
inc edx
mov ecx, edx
cmp edx, 5
jne 0x40c0ce
mov word [esi + 0x8e], 0
mov dword [esi + 0x28d8], 0xffffffff
push 4
call fcn.005db3dd
add esp, 4
mov dword [esi + 0x28], eax
mov dword [esi + 0x28d8], 0
lea eax, [esi + 0x76]
lea ecx, [esi + 0xa0]
push eax
call fcn.00406642
mov ecx, dword [esi + 0x28]
mov dword [ecx], 0
mov dword [esi + 0x28d8], 1
push 2
lea eax, [esi + 0xa0]
push eax
call fcn.0044527c
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
mov edi, dword [esi + 0x28]
lea ebx, [esi + 0xa0]
jb 0x40c282
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40c278
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f477
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
xorpd xmm3, xmm3
movsd xmm4, qword [0x612488]
movsd xmm5, qword [0x612490]
movsd xmm6, qword [0x612498]
movsd xmm7, qword [0x6124a0]
xorpd xmm0, xmm0
movapd xmm1, xmm3
mulsd xmm1, qword [0x612478]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612480]
mulsd xmm2, xmm3
addsd xmm2, xmm4
divsd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm2, xmm3
mulsd xmm2, xmm5
addsd xmm2, xmm1
movapd xmm0, xmm6
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
movsd xmm1, qword [0x6120f8]
addsd xmm3, xmm1
ucomisd xmm7, xmm3
ja 0x40c2aa
xorpd xmm1, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x40c36e
arpl word [bx + 0x3f], bx
inc edi
inc ebx
ja 0x40c3a2
dec edx
das
sub eax, 0x333a7534
jp 0x40c3af
pop ebp
xor byte [esi + 0x4e], cl
pop ebp
jp 0x40c388
pop ebp
inc esp
jge 0x40c35e
inc edx
inc ebx
inc ebp
or dword [eax + 8], ecx
inc edx
adc ecx, dword [ecx + 0xd]
dec ebp
or dword [ebp + 0xf], ecx
inc eax
adc dword [edi], edi
push es
inc eax
or ecx, dword [ebp + 5]
inc edi
or eax, 0x14450947
aas
adc dword [edi + ecx + 0x4c], eax
adc eax, dword [esi - 0x39]
xchg al, bl
sub byte [eax], al
add bh, bh
invalid
inc esi
mov dword [esi + 0x28d8], 0xffffffff
jmp 0x40c8ee
lea edx, [0x40c33f]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
jg 0x40c316
push es
mov al, byte [0x83000000]
rcl byte [eax], 0x66
paddb mm1, mm2
cmp eax, 0x100
jne 0x40c386
movsd xmm1, qword [0x612130]
and dword [ecx], esp
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
sub al, 0xc2
lea ecx, [0x40c31f]
mov dword [esi + 0x10], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x18], eax
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x20], ecx
mov eax, 0xff
xor ebx, ebx
xor ecx, ecx
mov dword [esi + 0x1c], edx
xor edi, edi
inc edi
cmp eax, 2
jb 0x40c3f9
xor edi, edi
inc edi
add edi, edi
inc edi
cmp edi, eax
jb 0x40c3f2
mov dword [esi + 0x14], eax
mov edx, 0xc
cmp ebx, 3
mov dword [esi + 0xc], edx
ja case.default.0x40c409
jmp dword [ebx*4 + 0x6125e8]
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
jmp 0x40c43b
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x20]
jmp 0x40c43b
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x18]
jmp 0x40c460
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
mov cl, ch
jmp 0x40c460
movzx eax, cl
mov cl, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x10]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x24
cmp ebx, 0x23
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
mov dword [esi], ecx
movzx edx, cl
mov ecx, edi
mov eax, edi
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi + 0xc]
dec edx
je 0x40c49f
cmp eax, dword [esi + 0x14]
mov edi, ecx
mov ecx, dword [esi]
ja 0x40c401
jmp 0x40c4a8
xor edx, edx
div dword [esi + 0x14]
mov eax, edx
mov ecx, dword [esi]
mov edi, dword [esi + 0x14]
cmp edi, eax
mov edx, dword [esi + 0x1c]
je 0x40c4df
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
mov edx, dword [esi + 0x1c]
dec edi
mov eax, edi
jne 0x40c3e7
movzx ebx, byte [esi + 0xa1]
mov al, byte [esi + 0xa5]
mov byte [esi + 0xc], al
mov ecx, dword [esi + 4]
movzx eax, byte [esi + ecx + 0xa0]
mov cl, byte [edx]
mov ch, byte [edx + 1]
mov byte [esi], ch
mov dword [esi + 0x24], ebx
mov dl, byte [esi + ebx + 0xa0]
add dl, byte [esi + 0xa3]
mov byte [esi + 0x14], dl
movzx edi, dl
mov ch, byte [esi + edi + 0xa0]
mov dword [esi + 4], edi
movzx edx, byte [esi + 0xa7]
mov dword [esi + 0x10], edx
mov dword [esi + 8], eax
movzx edx, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], ch
mov eax, dword [esi + 0x10]
mov ch, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov ch, bl
inc ch
movzx edi, ch
mov ch, byte [esi + edi + 0xa0]
mov byte [esi + eax + 0xa0], ch
mov byte [esi + edi + 0xa0], dl
movzx edi, byte [esi + eax + 0xa0]
mov eax, dword [esi + 8]
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
mov dword [esi + 8], eax
mov al, byte [esi + 0xc]
add al, byte [esi + edx + 0xa0]
mov byte [esi + 0xc], al
movzx edi, al
movzx ebx, byte [esi + edi + 0xa0]
add ebx, dword [esi + 8]
mov al, byte [esi]
add al, 0xc2
shl cl, 4
add cl, 0xb0
or cl, al
mov eax, dword [esi + 4]
movzx edi, byte [esi + eax + 0xa0]
add edi, edx
mov eax, 0xff
and edi, eax
mov ah, byte [esi + edi + 0xa0]
xor ah, cl
mov edi, 0xff
and ebx, edi
movzx edi, byte [esi + ebx + 0xa0]
xor ah, byte [esi + edi + 0xa0]
mov ebx, dword [esi + 0x24]
mov ch, bl
add ch, 2
movzx edi, ch
mov dword [esi + 0x20], edi
xor edi, edi
mov dword [esi], edi
mov al, byte [esi + 0x14]
add al, dl
movzx ebx, cl
mov dword [esi + 0x10], ebx
mov edx, dword [esi + 0x1c]
mov cl, byte [edx + edi*2 + 2]
mov dl, byte [edx + edi*2 + 3]
mov byte [esi + 4], dl
mov byte [esi + 0x14], al
movzx edx, al
mov al, byte [esi + edx + 0xa0]
mov dword [esi + 8], edx
movzx edi, byte [esi + ebx + 0xa0]
mov dword [esi + 0x18], edi
mov byte [esi + ebx + 0xa0], al
movzx edi, ah
mov ch, byte [esi + edi + 0xa0]
mov byte [esi + edx + 0xa0], ch
mov eax, dword [esi + 0x20]
mov edx, dword [esi]
add eax, edx
mov edx, 0xff
and eax, edx
mov ch, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov ebx, dword [esi + 0x18]
mov byte [esi + eax + 0xa0], bl
movzx eax, byte [esi + edi + 0xa0]
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0xa0]
mov byte [esi + 0xc], al
movzx eax, al
movzx edi, byte [esi + eax + 0xa0]
add edi, edx
mov al, byte [esi + 4]
add al, 0xc2
shl cl, 4
add cl, 0xb0
or cl, al
mov eax, dword [esi + 8]
movzx eax, byte [esi + eax + 0xa0]
add eax, ebx
mov edx, 0xff
and eax, edx
mov ah, byte [esi + eax + 0xa0]
xor ah, cl
and edi, edx
movzx edx, byte [esi + edi + 0xa0]
xor ah, byte [esi + edx + 0xa0]
mov edx, ebx
mov edi, dword [esi]
mov byte [esi + edi + 0x36], ah
inc edi
cmp edi, 7
jne 0x40c5f5
mov al, byte [esi + 0x14]
add al, dl
mov ebx, dword [esi + 0x1c]
mov dl, byte [ebx + 0x10]
mov byte [esi + 0x18], dl
mov dl, byte [ebx + 0x11]
mov byte [esi + 0x2c], dl
movzx ecx, cl
mov dword [esi + 0x10], ecx
mov byte [esi + 0x14], al
movzx ebx, al
mov dword [esi + 8], ebx
mov al, byte [esi + ebx + 0xa0]
movzx edx, byte [esi + ecx + 0xa0]
mov dword [esi], edx
mov byte [esi + ecx + 0xa0], al
movzx eax, ah
mov dword [esi + 4], eax
mov ah, byte [esi + eax + 0xa0]
mov byte [esi + ebx + 0xa0], ah
mov ecx, dword [esi + 0x20]
add ecx, edi
mov eax, 0xff
and ecx, eax
mov ah, byte [esi + ecx + 0xa0]
mov ebx, dword [esi + 4]
mov byte [esi + ebx + 0xa0], ah
mov ebx, dword [esi]
mov byte [esi + ecx + 0xa0], bl
mov eax, dword [esi + 4]
movzx ecx, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x10]
movzx edx, byte [esi + eax + 0xa0]
add edx, ecx
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0xa0]
mov byte [esi + 0xc], al
movzx ecx, al
movzx ebx, byte [esi + ecx + 0xa0]
add ebx, edx
mov al, byte [esi + 0x2c]
add al, 0xc2
mov dl, byte [esi + 0x18]
shl dl, 4
add dl, 0xb0
or dl, al
mov eax, dword [esi + 8]
movzx ecx, byte [esi + eax + 0xa0]
add ecx, dword [esi]
mov eax, 0xff
and ecx, eax
mov ah, byte [esi + ecx + 0xa0]
xor ah, dl
mov al, dl
mov ecx, 0xff
and ebx, ecx
movzx ecx, byte [esi + ebx + 0xa0]
xor ah, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 0x24]
add cl, 3
movzx ecx, cl
add ecx, edi
mov dword [esi + 0x18], ecx
mov ecx, edx
mov byte [esi + 0x3d], ah
xor edx, edx
mov al, byte [esi + 0x14]
add al, byte [esi]
movzx ebx, cl
mov dword [esi + 0x10], ebx
mov ecx, dword [esi + 0x1c]
mov edi, edx
mov dh, byte [ecx + edx*2 + 0x12]
mov cl, byte [ecx + edi*2 + 0x13]
mov byte [esi + 8], cl
mov byte [esi + 0x14], al
movzx ecx, al
mov dword [esi + 4], ecx
mov dl, byte [esi + ecx + 0xa0]
movzx ecx, byte [esi + ebx + 0xa0]
mov dword [esi], ecx
mov byte [esi + ebx + 0xa0], dl
movzx ebx, ah
mov dl, byte [esi + ebx + 0xa0]
mov eax, dword [esi + 4]
mov byte [esi + eax + 0xa0], dl
mov eax, dword [esi + 0x18]
add eax, edi
mov ecx, 0xff
and eax, ecx
mov dl, byte [esi + eax + 0xa0]
mov byte [esi + ebx + 0xa0], dl
mov ecx, dword [esi]
mov byte [esi + eax + 0xa0], cl
movzx eax, byte [esi + ebx + 0xa0]
mov ecx, dword [esi + 0x10]
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, eax
mov al, byte [esi + 0xc]
mov ebx, dword [esi]
add al, byte [esi + ebx + 0xa0]
mov byte [esi + 0xc], al
movzx eax, al
movzx ebx, byte [esi + eax + 0xa0]
add ebx, ecx
mov al, byte [esi + 8]
add al, 0xc2
shl dh, 4
add dh, 0xb0
or dh, al
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0xa0]
add eax, dword [esi]
mov ecx, 0xff
and eax, ecx
mov ah, byte [esi + eax + 0xa0]
xor ah, dh
and ebx, ecx
movzx ecx, byte [esi + ebx + 0xa0]
xor ah, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0x3e], ah
inc edi
mov cl, dh
mov edx, edi
cmp edi, 8
jne 0x40c7e6
mov byte [esi + 0x45], 0
mov dword [esi + 0x28d8], 0xffffffff
mov edi, dword [esi + 0x28]
lea ebx, [esi + 0xa0]
lea eax, [esi + 0x36]
mov ecx, ebx
push eax
call fcn.00401278
mov dword [esi + 0x28d8], 2
mov ecx, edi
push 0
push ebx
call fcn.004454fe
mov edi, eax
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
mov ebx, dword [esi + 0x28]
jb 0x40c963
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40c959
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f477
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
xorpd xmm3, xmm3
movsd xmm4, qword [0x6124b8]
movsd xmm5, qword [0x6124c0]
movsd xmm6, qword [0x6124c8]
movsd xmm7, qword [0x6124d0]
xorpd xmm0, xmm0
movapd xmm1, xmm3
mulsd xmm1, qword [0x6124a8]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x6124b0]
mulsd xmm2, xmm3
addsd xmm2, xmm4
divsd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm2, xmm3
mulsd xmm2, xmm5
addsd xmm2, xmm1
movapd xmm0, xmm6
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
movsd xmm1, qword [0x612408]
addsd xmm3, xmm1
ucomisd xmm7, xmm3
ja 0x40c98b
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
mov dword [esi + 0x2c], edi
jbe 0x40ca60
jl 0x40ca61
inc edi
pop edi
js 0x40ca4a
inc ebp
jo 0x40ca76
xor eax, 0x7b4b4642
popal
ja 0x40ca3a
dec ebp
jnp 0x40ca75
inc ecx
and ebp, dword [edi]
pop esi
and byte [0x51705458], ah
in al, dx
dec esp
cli
dec edx
out dx, eax
push ebx
hlt
in al, dx
push edx
sti
dec eax
clc
dec edx
invalid
in eax, dx
dec edi
in al, dx
dec eax
cmc
inc edi
hlt
lea edx, [0x40ca21]
adc eax, 0x40ca21
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
and dword [ecx], esp
popal
add bl, dh
movq qword [esi + eax + 0xa0], mm1
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x40ca78
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x40ca03]
mov dword [esi + 0x10], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x18], eax
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x20], ecx
mov eax, 0xff
xor ebx, ebx
xor ecx, ecx
mov dword [esi + 0x1c], edx
xor edi, edi
inc edi
cmp eax, 2
jb 0x40caeb
xor edi, edi
inc edi
add edi, edi
inc edi
cmp edi, eax
jb 0x40cae4
mov dword [esi + 0x14], eax
mov edx, 0xc
cmp ebx, 3
mov dword [esi + 0xc], edx
ja case.default.0x40cafb
jmp dword [ebx*4 + 0x6125f8]
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
jmp 0x40cb2d
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x20]
jmp 0x40cb2d
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x18]
jmp 0x40cb52
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
mov cl, ch
jmp 0x40cb52
movzx eax, cl
mov cl, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x10]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x22
cmp ebx, 0x21
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
mov dword [esi], ecx
movzx edx, cl
mov ecx, edi
mov eax, edi
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi + 0xc]
dec edx
je 0x40cb91
cmp eax, dword [esi + 0x14]
mov edi, ecx
mov ecx, dword [esi]
ja 0x40caf3
jmp 0x40cb9a
xor edx, edx
div dword [esi + 0x14]
mov eax, edx
mov ecx, dword [esi]
mov edi, dword [esi + 0x14]
cmp edi, eax
mov edx, dword [esi + 0x1c]
je 0x40cbd1
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
mov edx, dword [esi + 0x1c]
dec edi
mov eax, edi
jne 0x40cad9
movzx edi, byte [esi + 0xa1]
mov dword [esi + 0x14], edi
mov bl, byte [esi + 0xa5]
mov ecx, dword [esi + 4]
movzx eax, byte [esi + ecx + 0xa0]
mov dword [esi + 4], eax
mov bh, byte [edx]
mov al, byte [esi + edi + 0xa0]
add al, byte [esi + 0xa3]
mov byte [esi + 0xc], al
mov ah, byte [edx + 1]
movzx ecx, al
mov dword [esi], ecx
mov al, byte [esi + ecx + 0xa0]
movzx ecx, byte [esi + 0xa7]
mov dword [esi + 8], ecx
mov edx, dword [esi + 4]
movzx edi, byte [esi + edx + 0xa0]
mov dword [esi + 0x10], edi
mov byte [esi + edx + 0xa0], al
mov dl, byte [esi + ecx + 0xa0]
mov edi, dword [esi]
mov byte [esi + edi + 0xa0], dl
mov ecx, dword [esi + 0x14]
mov edx, ecx
inc dl
movzx edx, dl
mov al, byte [esi + edx + 0xa0]
mov ecx, dword [esi + 8]
mov byte [esi + ecx + 0xa0], al
mov ecx, dword [esi + 0x10]
mov byte [esi + edx + 0xa0], cl
add ah, 0x14
shl bh, 4
add bh, 0xa0
or bh, ah
movzx eax, byte [esi + edi + 0xa0]
add eax, ecx
mov edx, 0xff
and eax, edx
movzx edi, bh
xor bh, byte [esi + eax + 0xa0]
add bl, byte [esi + ecx + 0xa0]
mov byte [esi], bl
mov eax, dword [esi + 8]
movzx eax, byte [esi + eax + 0xa0]
mov edx, dword [esi + 4]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
movzx eax, bl
movzx eax, byte [esi + eax + 0xa0]
add eax, edx
mov edx, 0xff
and eax, edx
movzx eax, byte [esi + eax + 0xa0]
xor bh, byte [esi + eax + 0xa0]
mov byte [esi + 0x20], bh
mov eax, dword [esi + 0x14]
mov dl, byte [esi + 0xc]
add dl, cl
mov ecx, dword [esi + 0x1c]
mov dh, byte [ecx + 2]
mov cl, byte [ecx + 3]
mov byte [esi + 8], cl
mov byte [esi + 0xc], dl
movzx ecx, dl
mov dl, byte [esi + ecx + 0xa0]
mov dword [esi + 0x10], ecx
mov dword [esi + 0x18], edi
movzx ebx, byte [esi + edi + 0xa0]
mov dword [esi + 4], ebx
mov byte [esi + edi + 0xa0], dl
movzx edi, byte [esi + 0x20]
mov dl, byte [esi + edi + 0xa0]
mov byte [esi + ecx + 0xa0], dl
mov dl, al
add dl, 2
movzx ecx, dl
mov dl, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], dl
mov ebx, dword [esi + 4]
mov byte [esi + ecx + 0xa0], bl
movzx ecx, byte [esi + edi + 0xa0]
mov edi, dword [esi + 0x18]
movzx edi, byte [esi + edi + 0xa0]
add edi, ecx
mov cl, byte [esi]
add cl, byte [esi + ebx + 0xa0]
mov byte [esi], cl
movzx ecx, cl
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edi
mov dword [esi + 0x18], ecx
mov cl, byte [esi + 8]
add cl, 0x14
shl dh, 4
add dh, 0xa0
or dh, cl
mov ecx, dword [esi + 0x10]
movzx edi, byte [esi + ecx + 0xa0]
mov ecx, ebx
add edi, ebx
mov ecx, 0xff
and edi, ecx
mov dl, byte [esi + edi + 0xa0]
xor dl, dh
mov edi, 0xff
mov ecx, dword [esi + 0x18]
and ecx, edi
movzx ecx, byte [esi + ecx + 0xa0]
xor dl, byte [esi + ecx + 0xa0]
mov byte [esi + 0x5e], dl
add al, 4
xor ecx, ecx
mov byte [esi + 8], al
mov al, byte [esi + 0xc]
add al, bl
movzx ebx, dh
mov edi, dword [esi + 0x1c]
mov dword [esi + 0x24], ecx
mov dh, byte [edi + ecx*2 + 4]
mov ah, byte [edi + ecx*2 + 5]
mov byte [esi + 0x14], ah
mov byte [esi + 0xc], al
movzx edi, al
mov dword [esi + 0x10], edi
mov al, byte [esi + edi + 0xa0]
mov byte [esi + 0x20], al
mov eax, ebx
mov dword [esi + 0x18], ebx
movzx ebx, byte [esi + ebx + 0xa0]
mov dword [esi + 4], ebx
mov cl, byte [esi + 0x20]
mov byte [esi + eax + 0xa0], cl
movzx eax, dl
mov dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
mov dl, byte [esi + 8]
dec dl
movzx edi, dl
mov dl, byte [esi + edi + 0xa0]
mov byte [esi + eax + 0xa0], dl
mov byte [esi + edi + 0xa0], bl
movzx eax, byte [esi + eax + 0xa0]
mov edi, dword [esi + 0x18]
movzx edi, byte [esi + edi + 0xa0]
add edi, eax
mov al, byte [esi]
add al, byte [esi + ebx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
mov dl, byte [esi + 0x14]
add dl, 0x14
shl dh, 4
add dh, 0xa0
or dh, dl
mov edi, dword [esi + 0x10]
movzx edi, byte [esi + edi + 0xa0]
add edi, ebx
mov ebx, 0xff
and edi, ebx
mov ebx, 0xff
mov dl, byte [esi + edi + 0xa0]
xor dl, dh
and eax, ebx
mov ebx, dword [esi + 4]
movzx eax, byte [esi + eax + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov edi, dword [esi + 0x24]
mov byte [esi + edi + 0x5f], dl
mov al, byte [esi + 8]
inc al
inc edi
mov ecx, edi
cmp edi, 9
jne 0x40cdc2
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x1c]
mov cl, byte [eax + 0x16]
mov al, byte [eax + 0x17]
mov byte [esi + 0x18], al
movzx eax, dh
mov dword [esi + 0x10], eax
mov al, byte [esi + 0xc]
add al, bl
mov byte [esi + 0xc], al
movzx edi, al
mov dh, byte [esi + edi + 0xa0]
mov dword [esi + 0x20], edi
mov eax, dword [esi + 0x10]
movzx ebx, byte [esi + eax + 0xa0]
mov dword [esi + 4], ebx
mov byte [esi + eax + 0xa0], dh
movzx eax, dl
mov dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
movzx edx, byte [esi + 8]
mov ch, byte [esi + edx + 0xa0]
mov byte [esi + eax + 0xa0], ch
mov edi, eax
mov byte [esi + edx + 0xa0], bl
mov al, byte [esi]
add al, byte [esi + ebx + 0xa0]
movzx edx, byte [esi + edi + 0xa0]
mov edi, dword [esi + 0x10]
movzx edi, byte [esi + edi + 0xa0]
add edi, edx
mov byte [esi], al
movzx edx, al
movzx ebx, byte [esi + edx + 0xa0]
add ebx, edi
mov al, byte [esi + 0x18]
add al, 0x14
shl cl, 4
add cl, 0xa0
or cl, al
mov eax, dword [esi + 0x20]
movzx edx, byte [esi + eax + 0xa0]
mov eax, dword [esi + 4]
mov edi, eax
add edx, eax
mov eax, 0xff
and edx, eax
mov ch, byte [esi + edx + 0xa0]
xor ch, cl
and ebx, eax
movzx edx, byte [esi + ebx + 0xa0]
xor ch, byte [esi + edx + 0xa0]
mov byte [esi + 0x68], ch
xor ebx, ebx
mov al, byte [esi + 0xc]
mov edx, edi
add al, dl
movzx edx, cl
mov dword [esi + 8], edx
mov edi, dword [esi + 0x1c]
mov cl, byte [edi + ebx*2 + 0x18]
mov dl, byte [edi + ebx*2 + 0x19]
mov byte [esi + 0x10], dl
mov byte [esi + 0xc], al
movzx edx, al
mov dword [esi + 0x18], edx
mov al, byte [esi + edx + 0xa0]
mov byte [esi + 0x20], al
mov edi, dword [esi + 8]
movzx eax, byte [esi + edi + 0xa0]
mov dword [esi + 4], eax
mov al, byte [esi + 0x20]
mov byte [esi + edi + 0xa0], al
movzx edi, ch
mov ch, byte [esi + edi + 0xa0]
mov byte [esi + edx + 0xa0], ch
movzx eax, byte [esi + 0x14]
mov ch, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov edx, dword [esi + 4]
mov byte [esi + eax + 0xa0], dl
movzx eax, byte [esi + edi + 0xa0]
mov edi, dword [esi + 8]
movzx edi, byte [esi + edi + 0xa0]
add edi, eax
mov al, byte [esi]
add al, byte [esi + edx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
mov ch, byte [esi + 0x10]
add ch, 0x14
shl cl, 4
add cl, 0xa0
or cl, ch
mov edi, dword [esi + 0x18]
movzx edi, byte [esi + edi + 0xa0]
add edi, edx
mov edx, 0xff
and edi, edx
mov edx, 0xff
mov ch, byte [esi + edi + 0xa0]
xor ch, cl
and eax, edx
movzx eax, byte [esi + eax + 0xa0]
xor ch, byte [esi + eax + 0xa0]
mov byte [esi + ebx + 0x69], ch
inc ebx
mov eax, dword [esi + 0x14]
inc al
mov dword [esi + 0x14], eax
mov edi, dword [esi + 4]
cmp ebx, 0xb
jne 0x40cf9f
mov al, byte [esi + 0xc]
mov edx, edi
add al, dl
mov edi, dword [esi + 0x1c]
mov dl, byte [edi + 0x2e]
mov dh, byte [edi + 0x2f]
movzx edi, cl
mov dword [esi + 0xc], edi
movzx eax, al
mov cl, byte [esi + eax + 0xa0]
movzx ebx, byte [esi + edi + 0xa0]
mov dword [esi + 4], ebx
mov byte [esi + edi + 0xa0], cl
movzx edi, ch
mov cl, byte [esi + edi + 0xa0]
mov byte [esi + eax + 0xa0], cl
movzx ecx, byte [esi + 0x14]
mov bl, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], bl
mov ebx, dword [esi + 4]
mov byte [esi + ecx + 0xa0], bl
mov cl, byte [esi]
add cl, byte [esi + ebx + 0xa0]
movzx eax, byte [esi + eax + 0xa0]
add eax, ebx
add dh, 0x14
shl dl, 4
add dl, 0xa0
or dl, dh
mov ebx, 0xff
and eax, ebx
xor dl, byte [esi + eax + 0xa0]
movzx eax, byte [esi + edi + 0xa0]
mov edi, dword [esi + 0xc]
movzx edi, byte [esi + edi + 0xa0]
add edi, eax
movzx eax, cl
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
and eax, ebx
movzx eax, byte [esi + eax + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + 0x74], dl
mov byte [esi + 0x75], 0
mov dword [esi + 0x28d8], 0xffffffff
mov ebx, dword [esi + 0x28]
lea eax, [esi + 0x5e]
lea edi, [esi + 0xa0]
mov ecx, edi
push eax
call fcn.00401278
mov dword [esi + 0x28d8], 3
mov ecx, ebx
push 0
push edi
call fcn.004454fe
mov dword [esi + 0x28], eax
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40d1e4
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40d1da
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f477
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
xorpd xmm4, xmm4
movsd xmm5, qword [0x6124f0]
movsd xmm6, qword [0x6124f8]
movsd xmm7, qword [0x612228]
movsd xmm2, qword [0x612500]
xorpd xmm0, xmm0
movapd xmm1, xmm4
mulsd xmm1, qword [0x6124d8]
mulsd xmm1, xmm4
movapd xmm3, xmm4
mulsd xmm3, xmm4
subsd xmm1, xmm3
movapd xmm3, xmm4
mulsd xmm3, qword [0x6124e0]
mulsd xmm3, xmm4
addsd xmm3, qword [0x6124e8]
divsd xmm1, xmm3
addsd xmm1, xmm0
movapd xmm3, xmm4
mulsd xmm3, xmm5
addsd xmm3, xmm1
movapd xmm0, xmm6
cmpltsd xmm0, xmm1
andpd xmm3, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm3
push ebp
shl dword [esi + 0xf], 0x56
ret
addsd xmm4, xmm7
ucomisd xmm2, xmm4
ja 0x40d20c
aam 0x77
cdq
xorpd xmm1, xmm1
leave
ucomisd xmm1, xmm0
jbe 0x40d2ad
cmp eax, 0x78616b4f
cmp esi, dword [eax]
sub eax, 0x2e547330
and dl, byte [ebp + 0x41]
pop ebp
js 0x40d30c
into
jl 0x40d263
rol byte [esi + eax*8 - 0x34793384], 1
test dh, al
jl 0x40d263
xchg bl, cl
jl 0x40d269
test edi, ecx
jle 0x40d26f
xchg ah, dl
js 0x40d272
jl 0x40d276
jns 0x40d26f
ja 0x40d292
inc ebp
pop es
add byte [eax], al
lea edx, [0x40d290]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x40d2c5
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x40d27d]
mov dword [esi + 0x10], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x18], eax
call 0x18875c29
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x20], ecx
mov eax, 0xff
xor ebx, ebx
xor ecx, ecx
mov dword [esi + 0x1c], edx
xor edi, edi
inc edi
cmp eax, 2
jb 0x40d338
xor edi, edi
inc edi
add edi, edi
inc edi
cmp edi, eax
jb 0x40d331
mov dword [esi + 0x14], eax
mov edx, 0xc
cmp ebx, 3
mov dword [esi + 0xc], edx
ja case.default.0x40d348
jmp dword [ebx*4 + 0x612608]
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
jmp 0x40d37a
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x20]
jmp 0x40d37a
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x18]
jmp 0x40d39f
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
mov cl, ch
jmp 0x40d39f
movzx eax, cl
mov cl, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x10]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x17
cmp ebx, 0x16
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
mov dword [esi], ecx
movzx edx, cl
mov ecx, edi
mov eax, edi
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi + 0xc]
dec edx
je 0x40d3de
cmp eax, dword [esi + 0x14]
mov edi, ecx
mov ecx, dword [esi]
ja 0x40d340
jmp 0x40d3e7
xor edx, edx
div dword [esi + 0x14]
mov eax, edx
mov ecx, dword [esi]
mov edi, dword [esi + 0x14]
cmp edi, eax
mov edx, dword [esi + 0x1c]
je 0x40d41e
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
mov edx, dword [esi + 0x1c]
dec edi
mov eax, edi
jne 0x40d326
mov cl, byte [esi + 0xa1]
mov byte [esi], cl
mov al, byte [esi + 0xa5]
mov byte [esi + 0xc], al
mov edi, edx
movzx edx, cl
mov ecx, dword [esi + 4]
movzx ebx, byte [esi + ecx + 0xa0]
mov ch, byte [edi]
mov dword [esi + 0x20], edx
mov al, byte [esi + edx + 0xa0]
add al, byte [esi + 0xa3]
mov byte [esi + 0x14], al
mov cl, byte [edi + 1]
movzx edi, al
mov al, byte [esi + edi + 0xa0]
movzx edx, byte [esi + 0xa7]
mov dword [esi + 8], edx
mov dword [esi + 0x10], ebx
movzx edx, byte [esi + ebx + 0xa0]
mov dword [esi + 0x18], edx
mov byte [esi + ebx + 0xa0], al
mov eax, dword [esi + 8]
mov dh, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dh
mov dh, byte [esi]
inc dh
movzx ebx, dh
mov dh, byte [esi + ebx + 0xa0]
mov byte [esi + eax + 0xa0], dh
mov eax, dword [esi + 0x18]
mov byte [esi + ebx + 0xa0], al
add cl, 0x89
shl ch, 4
add ch, 0xa0
or ch, cl
movzx edi, byte [esi + edi + 0xa0]
add edi, eax
mov ebx, 0xff
and edi, ebx
movzx ebx, ch
mov dword [esi + 4], ebx
xor ch, byte [esi + edi + 0xa0]
mov cl, byte [esi + 0xc]
add cl, byte [esi + eax + 0xa0]
mov byte [esi + 0xc], cl
mov edi, dword [esi + 8]
movzx edi, byte [esi + edi + 0xa0]
mov ebx, dword [esi + 0x10]
movzx ebx, byte [esi + ebx + 0xa0]
add ebx, edi
movzx edi, cl
movzx edi, byte [esi + edi + 0xa0]
add edi, ebx
mov ebx, 0xff
and edi, ebx
movzx edi, byte [esi + edi + 0xa0]
xor ch, byte [esi + edi + 0xa0]
mov dl, byte [esi + 0x14]
add dl, al
mov edi, dword [esi + 0x1c]
mov cl, byte [edi + 2]
mov al, byte [edi + 3]
mov byte [esi + 8], al
mov byte [esi + 0x14], dl
movzx edx, dl
mov ah, byte [esi + edx + 0xa0]
mov dword [esi + 0x10], edx
mov edi, dword [esi + 4]
movzx ebx, byte [esi + edi + 0xa0]
mov byte [esi + edi + 0xa0], ah
movzx eax, ch
mov dword [esi + 0x18], eax
mov ah, byte [esi + eax + 0xa0]
mov byte [esi + edx + 0xa0], ah
mov dl, byte [esi]
add dl, 2
movzx edi, dl
mov ah, byte [esi + edi + 0xa0]
mov edx, dword [esi + 0x18]
mov byte [esi + edx + 0xa0], ah
mov byte [esi + edi + 0xa0], bl
movzx edx, byte [esi + edx + 0xa0]
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0xa0]
add eax, edx
mov dword [esi], eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0xa0]
mov byte [esi + 0xc], al
movzx edi, al
movzx edx, byte [esi + edi + 0xa0]
add edx, dword [esi]
mov al, byte [esi + 8]
add al, 0x89
shl cl, 4
add cl, 0xa0
or cl, al
mov eax, dword [esi + 0x10]
movzx edi, byte [esi + eax + 0xa0]
mov dword [esi], ebx
add edi, ebx
mov ebx, 0xff
and edi, ebx
mov ah, byte [esi + edi + 0xa0]
xor ah, cl
and edx, ebx
movzx edi, byte [esi + edx + 0xa0]
xor ah, byte [esi + edi + 0xa0]
movsx edi, ah
mov word [esi + 0x46], di
mov edx, 0xfffffffc
mov al, byte [esi + 0x14]
add al, byte [esi]
movzx ebx, cl
mov dword [esi + 0x18], ebx
mov edi, dword [esi + 0x1c]
mov dword [esi + 8], edx
mov cl, byte [edi + edx*2 + 0xc]
mov ch, byte [edi + edx*2 + 0xd]
mov byte [esi + 4], ch
mov byte [esi + 0x14], al
movzx edi, al
mov dword [esi + 0x10], edi
mov al, byte [esi + edi + 0xa0]
movzx edx, byte [esi + ebx + 0xa0]
mov dword [esi], edx
mov byte [esi + ebx + 0xa0], al
movzx edx, ah
mov ch, byte [esi + edx + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 8]
add edi, ebx
add edi, 7
mov eax, 0xff
and edi, eax
mov ch, byte [esi + edi + 0xa0]
mov byte [esi + edx + 0xa0], ch
mov eax, dword [esi]
mov byte [esi + edi + 0xa0], al
mov edi, eax
movzx eax, byte [esi + edx + 0xa0]
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov al, byte [esi + 0xc]
add al, byte [esi + edi + 0xa0]
mov byte [esi + 0xc], al
movzx eax, al
movzx edi, byte [esi + eax + 0xa0]
add edi, edx
mov al, byte [esi + 4]
add al, 0x89
shl cl, 4
add cl, 0xa0
or cl, al
mov eax, dword [esi + 0x10]
movzx eax, byte [esi + eax + 0xa0]
add eax, dword [esi]
mov edx, 0xff
and eax, edx
mov ah, byte [esi + eax + 0xa0]
xor ah, cl
and edi, edx
movzx edx, byte [esi + edi + 0xa0]
xor ah, byte [esi + edx + 0xa0]
movsx edx, ah
mov edi, ebx
mov word [esi + ebx*2 + 0x50], dx
inc edi
mov edx, edi
jne 0x40d60b
mov al, byte [esi + 0x14]
add al, byte [esi]
mov byte [esi + 0x14], al
mov edi, dword [esi + 0x1c]
mov ch, byte [edi + 0xc]
mov byte [esi + 0x10], ch
mov ch, byte [edi + 0xd]
mov byte [esi + 0x18], ch
movzx edi, cl
mov dword [esi + 4], edi
movzx ecx, al
mov al, byte [esi + ecx + 0xa0]
mov ebx, ecx
movzx ecx, byte [esi + edi + 0xa0]
mov dword [esi], ecx
mov byte [esi + edi + 0xa0], al
movzx eax, ah
mov dword [esi + 0x24], eax
mov cl, byte [esi + eax + 0xa0]
mov edi, ebx
mov byte [esi + ebx + 0xa0], cl
mov dword [esi + 8], edx
mov eax, dword [esi + 0x20]
lea ecx, [eax + edx]
add ecx, 7
mov ebx, 0xff
and ecx, ebx
mov ah, byte [esi + ecx + 0xa0]
mov ebx, dword [esi + 0x24]
mov byte [esi + ebx + 0xa0], ah
mov eax, dword [esi]
mov byte [esi + ecx + 0xa0], al
mov cl, byte [esi + 0x18]
add cl, 0x89
mov dh, byte [esi + 0x10]
shl dh, 4
add dh, 0xa0
or dh, cl
movzx ecx, byte [esi + edi + 0xa0]
add ecx, eax
mov edi, 0xff
and ecx, edi
movzx edi, dh
mov dword [esi + 0x10], edi
xor dh, byte [esi + ecx + 0xa0]
mov dl, byte [esi + 0xc]
add dl, byte [esi + eax + 0xa0]
movzx ecx, byte [esi + ebx + 0xa0]
mov eax, dword [esi + 4]
movzx ebx, byte [esi + eax + 0xa0]
add ebx, ecx
movzx ecx, dl
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, ebx
mov eax, 0xff
and ecx, eax
movzx ecx, byte [esi + ecx + 0xa0]
xor dh, byte [esi + ecx + 0xa0]
movsx ecx, dh
mov word [esi + 0x50], cx
mov eax, dword [esi + 0x20]
mov edi, dword [esi + 8]
lea ecx, [eax + edi]
mov dword [esi + 4], ecx
add edi, eax
add edi, 8
mov al, byte [esi + 0x14]
add al, byte [esi]
mov ecx, dword [esi + 0x1c]
mov ah, byte [ecx + 0xe]
mov byte [esi + 0x18], ah
mov ah, byte [ecx + 0xf]
mov byte [esi + 0x14], al
movzx ecx, al
mov dword [esi + 8], ecx
mov al, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 0x10]
movzx ebx, byte [esi + ecx + 0xa0]
mov byte [esi + ecx + 0xa0], al
movzx ecx, dh
mov dword [esi + 0xc], ecx
mov dh, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 8]
mov byte [esi + ecx + 0xa0], dh
mov ecx, 0xff
and edi, ecx
mov dh, byte [esi + edi + 0xa0]
mov ecx, dword [esi + 0xc]
mov byte [esi + ecx + 0xa0], dh
mov byte [esi + edi + 0xa0], bl
mov dword [esi], ebx
movzx edi, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 0x10]
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edi
add dl, byte [esi + ebx + 0xa0]
mov byte [esi + 0xc], dl
movzx edi, dl
movzx ebx, byte [esi + edi + 0xa0]
add ebx, ecx
mov al, byte [esi + 0x18]
shl al, 4
add al, 0xa0
add ah, 0x89
or ah, al
mov ecx, dword [esi + 8]
movzx edi, byte [esi + ecx + 0xa0]
add edi, dword [esi]
mov ecx, 0xff
and edi, ecx
mov ecx, 0xff
mov dh, byte [esi + edi + 0xa0]
xor dh, ah
and ebx, ecx
movzx edi, byte [esi + ebx + 0xa0]
xor dh, byte [esi + edi + 0xa0]
movsx edi, dh
mov word [esi + 0x52], di
mov ecx, dword [esi + 4]
add cl, 9
mov dword [esi + 4], ecx
xor ebx, ebx
mov dl, byte [esi + 0x14]
add dl, byte [esi]
movzx eax, ah
mov dword [esi + 0x18], eax
mov ecx, dword [esi + 0x1c]
mov edi, ebx
mov dword [esi + 0x20], ebx
mov bl, byte [ecx + ebx*2 + 0x10]
mov cl, byte [ecx + edi*2 + 0x11]
mov byte [esi + 8], cl
mov byte [esi + 0x14], dl
movzx ecx, dl
mov dword [esi + 0x10], ecx
mov dl, byte [esi + ecx + 0xa0]
movzx edi, byte [esi + eax + 0xa0]
mov dword [esi], edi
mov byte [esi + eax + 0xa0], dl
movzx edx, dh
mov al, byte [esi + edx + 0xa0]
mov edi, edx
mov byte [esi + ecx + 0xa0], al
movzx edx, byte [esi + 4]
mov al, byte [esi + edx + 0xa0]
mov ecx, edi
mov byte [esi + edi + 0xa0], al
mov eax, dword [esi]
mov byte [esi + edx + 0xa0], al
movzx eax, byte [esi + edi + 0xa0]
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov al, byte [esi + 0xc]
mov ecx, dword [esi]
add al, byte [esi + ecx + 0xa0]
mov byte [esi + 0xc], al
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov al, byte [esi + 8]
add al, 0x89
shl bl, 4
add bl, 0xa0
or bl, al
mov eax, dword [esi + 0x10]
movzx edx, byte [esi + eax + 0xa0]
add edx, dword [esi]
mov eax, 0xff
and edx, eax
mov dh, byte [esi + edx + 0xa0]
xor dh, bl
and ecx, eax
movzx ecx, byte [esi + ecx + 0xa0]
xor dh, byte [esi + ecx + 0xa0]
movsx ecx, dh
mov edi, dword [esi + 0x20]
mov word [esi + edi*2 + 0x54], cx
inc edi
mov ecx, dword [esi + 4]
inc cl
mov dword [esi + 4], ecx
mov ah, bl
mov ebx, edi
cmp edi, 5
jne 0x40d8f0
mov word [esi + 0x5c], 0
mov dword [esi + 0x28d8], 0xffffffff
mov edi, 4
push edi
call fcn.005db3dd
add esp, 4
mov dword [esi], eax
mov dword [esi + 0x28d8], edi
lea eax, [esi + 0x46]
lea ecx, [esi + 0xa0]
push eax
call fcn.00406642
mov ecx, dword [esi]
mov dword [ecx], 0
mov dword [esi + 0x28d8], 5
push 2
lea eax, [esi + 0xa0]
push eax
call fcn.0044527c
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
lea edi, [esi + 0xa0]
jb 0x40da98
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40da8e
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f477
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
xorpd xmm4, xmm4
movsd xmm5, qword [0x612520]
movsd xmm6, qword [0x612528]
movsd xmm7, qword [0x612280]
movsd xmm2, qword [0x612530]
xorpd xmm0, xmm0
movapd xmm1, xmm4
mulsd xmm1, qword [0x612508]
mulsd xmm1, xmm4
movapd xmm3, xmm4
mulsd xmm3, xmm4
subsd xmm1, xmm3
movapd xmm3, xmm4
mulsd xmm3, qword [0x612510]
mulsd xmm3, xmm4
addsd xmm3, qword [0x612518]
divsd xmm1, xmm3
sbb byte [0xff20061], ah
popal
add dl, dh
divps xmm1, xmm3
pop esi
retf
addsd xmm1, xmm0
addps xmm1, xmm0
movapd xmm3, xmm4
mulsd xmm3, xmm5
addsd xmm3, xmm1
pop ecx
invalid
addps xmm3, xmm1
pop eax
fldenv [esi + 0xf]
sub dh, al
movapd xmm0, xmm6
invalid
cmpltsd xmm0, xmm1
rol dword [ecx], 0x66
andps xmm3, xmm0
andpd xmm3, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm3
addsd xmm4, xmm7
ucomisd xmm2, xmm4
ja 0x40dac0
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x40db71
cmp byte [eax + 0x35], dh
push 0x43
outsd dx, dword [esi]
pop ebx
inc eax
xor edx, dword [edx + edi + 0x67]
and dl, byte [ebx + esi + 0x6f]
jo 0x40dbb9
scasb al, byte es:[edi]
jae 0x40daf6
jno 0x40daf0
jge 0x40daf2
jl 0x40db00
jnp 0x40daf9
jo 0x40db07
jp 0x40dafc
jno 0x40db02
jle 0x40db08
jo 0x40db0f
jns 0x40db05
jb 0x40db05
jne 0x40db06
jb 0x40db0b
jl 0x40db11
mov dword [esi + 0x28d8], 0xffffffff
jmp 0x40e1ab
lea edx, [0x40db42]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x40db89
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x40db31]
mov dword [esi + 0x10], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
add byte [ecx + 0x35104e], cl
add byte [eax], al
xor dl, 0xf
sub al, 0xc8
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x18], eax
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x20], ecx
mov eax, 0xff
xor ebx, ebx
xor ecx, ecx
mov dword [esi + 0x1c], edx
xor edi, edi
inc edi
cmp eax, 2
jb 0x40dbfc
xor edi, edi
inc edi
add edi, edi
inc edi
cmp edi, eax
jb 0x40dbf5
mov dword [esi + 0x14], eax
mov edx, 0xc
cmp ebx, 3
mov dword [esi + 0xc], edx
ja case.default.0x40dc0c
jmp dword [ebx*4 + 0x612618]
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
jmp 0x40dc3e
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x20]
jmp 0x40dc3e
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x18]
jmp 0x40dc63
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
mov cl, ch
jmp 0x40dc63
movzx eax, cl
mov cl, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x10]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x15
cmp ebx, 0x14
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
mov dword [esi], ecx
movzx edx, cl
mov ecx, edi
mov eax, edi
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi + 0xc]
dec edx
je 0x40dca2
cmp eax, dword [esi + 0x14]
mov edi, ecx
mov ecx, dword [esi]
ja 0x40dc04
jmp 0x40dcab
xor edx, edx
div dword [esi + 0x14]
mov eax, edx
mov ecx, dword [esi]
mov edi, dword [esi + 0x14]
cmp edi, eax
mov edx, dword [esi + 0x1c]
je 0x40dce2
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
mov edx, dword [esi + 0x1c]
dec edi
mov eax, edi
jne 0x40dbea
movzx ecx, byte [esi + 0xa1]
mov dword [esi + 0x14], ecx
mov edi, edx
mov al, byte [esi + 0xa5]
mov byte [esi], al
mov eax, dword [esi + 4]
movzx edx, byte [esi + eax + 0xa0]
mov dword [esi + 0x10], edx
mov al, byte [edi]
mov cl, byte [esi + ecx + 0xa0]
add cl, byte [esi + 0xa3]
mov byte [esi + 0xc], cl
mov ah, byte [edi + 1]
movzx edi, cl
mov cl, byte [esi + edi + 0xa0]
mov byte [esi + 8], cl
movzx ecx, byte [esi + 0xa7]
mov dword [esi + 4], ecx
movzx ebx, byte [esi + edx + 0xa0]
mov dword [esi + 0x18], ebx
mov bl, byte [esi + 8]
mov byte [esi + edx + 0xa0], bl
mov dh, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], dh
mov edx, dword [esi + 0x14]
mov dh, dl
inc dh
movzx ecx, dh
mov dh, byte [esi + ecx + 0xa0]
mov ebx, dword [esi + 4]
mov byte [esi + ebx + 0xa0], dh
mov edx, dword [esi + 0x18]
mov byte [esi + ecx + 0xa0], dl
add ah, 0x58
shl al, 4
or al, ah
movzx ecx, byte [esi + edi + 0xa0]
add ecx, edx
mov edi, 0xff
and ecx, edi
movzx edi, al
mov dword [esi + 8], edi
xor al, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 4]
movzx ecx, byte [esi + ecx + 0xa0]
mov edi, dword [esi + 0x10]
movzx edi, byte [esi + edi + 0xa0]
add edi, ecx
mov bh, byte [esi]
add bh, byte [esi + edx + 0xa0]
mov byte [esi], bh
movzx ecx, bh
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edi
mov edi, 0xff
and ecx, edi
movzx ecx, byte [esi + ecx + 0xa0]
xor al, byte [esi + ecx + 0xa0]
mov bl, byte [esi + 0xc]
add bl, dl
mov ecx, dword [esi + 0x1c]
mov ah, byte [ecx + 2]
mov cl, byte [ecx + 3]
mov byte [esi + 0x10], cl
mov byte [esi + 0xc], bl
movzx edi, bl
mov ecx, dword [esi + 0x14]
mov dl, byte [esi + edi + 0xa0]
mov byte [esi + 0x20], dl
mov edx, edi
mov dword [esi + 0x18], edi
mov edi, dword [esi + 8]
movzx ebx, byte [esi + edi + 0xa0]
mov dword [esi + 4], ebx
mov bl, byte [esi + 0x20]
mov byte [esi + edi + 0xa0], bl
movzx edi, al
mov dword [esi + 0x20], edi
mov al, byte [esi + edi + 0xa0]
mov byte [esi + edx + 0xa0], al
mov al, cl
add al, 2
movzx edi, al
mov al, byte [esi + edi + 0xa0]
mov edx, dword [esi + 0x20]
mov byte [esi + edx + 0xa0], al
mov ebx, dword [esi + 4]
mov byte [esi + edi + 0xa0], bl
movzx edx, byte [esi + edx + 0xa0]
mov dword [esi + 0x20], edx
mov edi, dword [esi + 8]
movzx edx, byte [esi + edi + 0xa0]
add edx, dword [esi + 0x20]
mov al, byte [esi]
add al, byte [esi + ebx + 0xa0]
mov byte [esi], al
movzx edi, al
movzx ebx, byte [esi + edi + 0xa0]
add ebx, edx
mov al, byte [esi + 0x10]
add al, 0x58
shl ah, 4
or ah, al
mov edx, dword [esi + 0x18]
movzx edi, byte [esi + edx + 0xa0]
add edi, dword [esi + 4]
mov edx, 0xff
and edi, edx
mov al, byte [esi + edi + 0xa0]
xor al, ah
and ebx, edx
movzx edi, byte [esi + ebx + 0xa0]
xor al, byte [esi + edi + 0xa0]
add cl, 4
xor ebx, ebx
mov byte [esi + 0x14], cl
mov cl, byte [esi + 0xc]
add cl, byte [esi + 4]
movzx edx, ah
mov dword [esi + 4], edx
mov edi, dword [esi + 0x1c]
mov dword [esi + 0x20], ebx
mov ah, byte [edi + ebx*2 + 4]
mov dl, byte [edi + ebx*2 + 5]
mov byte [esi + 8], dl
mov byte [esi + 0xc], cl
movzx edi, cl
mov dword [esi + 0x10], edi
mov cl, byte [esi + edi + 0xa0]
mov byte [esi + 0x18], cl
mov ecx, dword [esi + 4]
movzx edx, byte [esi + ecx + 0xa0]
mov bl, byte [esi + 0x18]
mov byte [esi + ecx + 0xa0], bl
movzx ecx, al
mov al, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], al
mov al, byte [esi + 0x14]
dec al
movzx edi, al
mov al, byte [esi + edi + 0xa0]
mov byte [esi + ecx + 0xa0], al
mov byte [esi + edi + 0xa0], dl
mov al, byte [esi]
add al, byte [esi + edx + 0xa0]
movzx ecx, byte [esi + ecx + 0xa0]
mov edi, dword [esi + 4]
movzx edi, byte [esi + edi + 0xa0]
add edi, ecx
mov byte [esi], al
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edi
mov al, byte [esi + 8]
add al, 0x58
shl ah, 4
or ah, al
mov edi, dword [esi + 0x10]
movzx edi, byte [esi + edi + 0xa0]
mov dword [esi + 4], edx
add edi, edx
mov edx, 0xff
and edi, edx
mov al, byte [esi + edi + 0xa0]
xor al, ah
and ecx, edx
movzx ecx, byte [esi + ecx + 0xa0]
xor al, byte [esi + ecx + 0xa0]
mov cl, byte [esi + 0x14]
mov dh, cl
inc cl
mov edi, dword [esi + 0x20]
inc edi
mov ebx, edi
cmp edi, 5
jne 0x40ded3
mov edi, dword [esi + 0x1c]
mov dl, byte [edi + 0xe]
mov byte [esi + 0x18], dl
mov dl, byte [edi + 0xf]
mov byte [esi + 0x20], dl
movzx edi, ah
mov dword [esi + 0x10], edi
mov dl, byte [esi + 0xc]
add dl, byte [esi + 4]
mov byte [esi + 0xc], dl
movzx edi, dl
mov dword [esi + 8], edi
mov ah, byte [esi + edi + 0xa0]
mov edi, dword [esi + 0x10]
movzx ebx, byte [esi + edi + 0xa0]
mov dword [esi + 4], ebx
mov byte [esi + edi + 0xa0], ah
movzx edi, al
mov al, byte [esi + edi + 0xa0]
mov ebx, dword [esi + 8]
mov byte [esi + ebx + 0xa0], al
movzx eax, dh
mov dh, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dh
mov ebx, dword [esi + 4]
mov byte [esi + eax + 0xa0], bl
mov eax, dword [esi + 0x10]
movzx eax, byte [esi + eax + 0xa0]
movzx edx, byte [esi + edi + 0xa0]
add edx, eax
mov al, byte [esi]
add al, byte [esi + ebx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx edi, byte [esi + eax + 0xa0]
add edi, edx
mov al, byte [esi + 0x20]
add al, 0x58
mov dl, byte [esi + 0x18]
shl dl, 4
or dl, al
mov eax, dword [esi + 8]
movzx eax, byte [esi + eax + 0xa0]
add eax, ebx
mov ebx, 0xff
and eax, ebx
mov al, byte [esi + eax + 0xa0]
mov ah, dl
xor al, dl
and edi, ebx
movzx edi, byte [esi + edi + 0xa0]
xor al, byte [esi + edi + 0xa0]
mov dword [esi + 0x14], ecx
mov dword [esi + 0x10], 0
mov cl, byte [esi + 0xc]
add cl, byte [esi + 4]
movzx edx, ah
mov dword [esi + 8], edx
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 0x10]
mov ah, byte [edi + ebx*2 + 0x10]
mov byte [esi + 0x18], ah
mov dl, byte [edi + ebx*2 + 0x11]
mov byte [esi + 0x20], dl
mov byte [esi + 0xc], cl
movzx edi, cl
mov dword [esi + 0x24], edi
mov ah, byte [esi + edi + 0xa0]
mov edx, dword [esi + 8]
movzx ecx, byte [esi + edx + 0xa0]
mov dword [esi + 4], ecx
mov byte [esi + edx + 0xa0], ah
movzx edx, al
mov al, byte [esi + edx + 0xa0]
mov byte [esi + edi + 0xa0], al
movzx edi, byte [esi + 0x14]
mov al, byte [esi + edi + 0xa0]
mov byte [esi + edx + 0xa0], al
mov eax, dword [esi + 4]
mov byte [esi + edi + 0xa0], al
mov cl, byte [esi]
add cl, byte [esi + eax + 0xa0]
mov edi, eax
movzx eax, byte [esi + edx + 0xa0]
mov edx, dword [esi + 8]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov byte [esi], cl
movzx ecx, cl
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov al, byte [esi + 0x20]
add al, 0x58
mov ah, byte [esi + 0x18]
shl ah, 4
or ah, al
mov edx, dword [esi + 0x24]
movzx edx, byte [esi + edx + 0xa0]
add edx, edi
mov edi, 0xff
and edx, edi
mov al, byte [esi + edx + 0xa0]
xor al, ah
and ecx, edi
movzx ecx, byte [esi + ecx + 0xa0]
xor al, byte [esi + ecx + 0xa0]
inc ebx
mov ecx, dword [esi + 0x14]
inc cl
mov dword [esi + 0x14], ecx
mov dword [esi + 0x10], ebx
cmp ebx, 6
jne 0x40e0aa
mov dword [esi + 0x28d8], 0xffffffff
lea edi, [esi + 0xa0]
lea ebx, [esi + 0x16c0]
push 0x208
push 0
push ebx
call fcn.005e2800
add esp, 0xc
push dword [ebp + 8]
push ebx
call fcn.005ffb20
add esp, 8
push dword [ebp + 0x10]
push ebx
call fcn.005ffb20
add esp, 8
mov ecx, edi
push ebx
call fcn.00406642
mov dword [esi + 0x28d8], 6
push edi
call fcn.004499db
add esp, 4
mov ebx, eax
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40e247
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40e23d
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f477
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
test bl, bl
je 0x40f460
xorpd xmm3, xmm3
movsd xmm5, qword [0x612550]
movsd xmm6, qword [0x612558]
movsd xmm7, qword [0x612560]
xorpd xmm0, xmm0
movsd xmm4, qword [0x6120f8]
movapd xmm1, xmm3
mulsd xmm1, qword [0x612538]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612540]
mulsd xmm2, xmm3
addsd xmm2, qword [0x612548]
divsd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm2, xmm3
mulsd xmm2, xmm5
addsd xmm2, xmm1
movapd xmm0, xmm6
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
addsd xmm3, xmm4
ucomisd xmm7, xmm3
ja 0x40e277
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
lea ebx, [esi + 0xa0]
jbe 0x40e394
aas
pop esp
jnp 0x40e326
sub ebp, dword [edx]
cmp esp, dword ss:[esi + 0x44]
push 0x51
dec ebp
bound edi, qword [ecx]
pop ecx
jp 0x40e334
push edi
inc ebp
das
pop ebx
jmp 0x40e36b
in eax, 0x54
out 0x5b, eax
jmp 0x40e381
call 0xed99d49b
push ebx
popal
out 0x57, eax
call 0xf099cba2
pop eax
out dx, eax
push esp
int1
pop ebx
hlt
push esi
in al, dx
pop esp
jmp 0x40e3c7
push ebx
jmp 0xf39fcce4
lea eax, [0x40e307]
mov dword [esi + 0x20], eax
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x40e3af
movsd xmm1, qword [0x612130]
movups xmm1, xmmword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x40e2f2]
mov dword [esi + 0x1c], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x10], eax
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x18], ecx
mov edi, 0xff
xor ebx, ebx
xor ecx, ecx
xor edx, edx
inc edx
cmp edi, 2
jb 0x40e41f
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, edi
jb 0x40e418
mov dword [esi + 0x14], edx
mov dword [esi + 0xc], edi
mov edx, 0xc
cmp ebx, 3
mov dword [esi], edx
ja case.default.0x40e431
jmp dword [ebx*4 + 0x612628]
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
jmp 0x40e463
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x18]
jmp 0x40e463
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x10]
jmp 0x40e488
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
mov cl, ch
jmp 0x40e488
movzx eax, cl
mov cl, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x1c]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x19
cmp ebx, 0x18
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
movzx edx, cl
mov eax, dword [esi + 0x14]
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi]
dec edx
je 0x40e4bf
cmp eax, dword [esi + 0xc]
ja 0x40e42a
jmp 0x40e4c6
xor edx, edx
div dword [esi + 0xc]
mov eax, edx
mov edi, dword [esi + 0xc]
cmp edi, eax
je 0x40e4f7
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
dec edi
jne 0x40e40d
mov al, byte [esi + 0xa1]
mov byte [esi + 8], al
mov cl, byte [esi + 0xa5]
mov byte [esi], cl
movzx edi, al
mov ecx, dword [esi + 4]
movzx ecx, byte [esi + ecx + 0xa0]
mov dword [esi + 0x1c], ecx
mov ebx, ecx
mov ecx, dword [esi + 0x20]
mov dl, byte [ecx]
mov dword [esi + 0x14], edi
mov al, byte [esi + edi + 0xa0]
add al, byte [esi + 0xa3]
mov byte [esi + 0xc], al
mov dh, byte [ecx + 1]
movzx edi, al
mov al, byte [esi + edi + 0xa0]
mov byte [esi + 4], al
movzx ecx, byte [esi + 0xa7]
mov dword [esi + 0x10], ecx
mov eax, ebx
movzx ebx, byte [esi + ebx + 0xa0]
mov dword [esi + 0x18], ebx
mov bl, byte [esi + 4]
mov byte [esi + eax + 0xa0], bl
mov bl, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], bl
mov bl, byte [esi + 8]
inc bl
movzx eax, bl
mov bl, byte [esi + eax + 0xa0]
mov byte [esi + ecx + 0xa0], bl
mov ecx, dword [esi + 0x18]
mov byte [esi + eax + 0xa0], cl
add dh, 0x1b
shl dl, 4
add dl, 0xd0
or dl, dh
movzx edi, byte [esi + edi + 0xa0]
add edi, ecx
mov ebx, 0xff
and edi, ebx
movzx ebx, dl
mov dword [esi + 4], ebx
xor dl, byte [esi + edi + 0xa0]
mov ah, byte [esi]
add ah, byte [esi + ecx + 0xa0]
mov byte [esi], ah
mov edi, dword [esi + 0x10]
movzx edi, byte [esi + edi + 0xa0]
mov ebx, dword [esi + 0x1c]
movzx ebx, byte [esi + ebx + 0xa0]
add ebx, edi
movzx edi, ah
movzx edi, byte [esi + edi + 0xa0]
add edi, ebx
mov eax, 0xff
and edi, eax
movzx edi, byte [esi + edi + 0xa0]
xor dl, byte [esi + edi + 0xa0]
mov al, byte [esi + 0xc]
add al, cl
mov byte [esi + 0xc], al
mov ecx, dword [esi + 0x20]
mov ah, byte [ecx + 2]
mov byte [esi + 0x1c], ah
mov bl, byte [ecx + 3]
mov ecx, dword [esi + 4]
movzx edi, byte [esi + ecx + 0xa0]
mov dword [esi + 0x10], edi
movzx edi, al
mov bh, byte [esi + edi + 0xa0]
mov byte [esi + ecx + 0xa0], bh
movzx edx, dl
mov ch, byte [esi + edx + 0xa0]
mov byte [esi + edi + 0xa0], ch
mov ch, byte [esi + 8]
add ch, 2
movzx eax, ch
mov ch, byte [esi + eax + 0xa0]
mov byte [esi + edx + 0xa0], ch
mov ecx, edx
mov edx, dword [esi + 0x10]
mov byte [esi + eax + 0xa0], dl
add bl, 0x1b
mov bh, byte [esi + 0x1c]
shl bh, 4
add bh, 0xd0
or bh, bl
movzx edi, byte [esi + edi + 0xa0]
add edi, edx
mov eax, 0xff
and edi, eax
movzx eax, bh
mov dword [esi + 0x1c], eax
xor bh, byte [esi + edi + 0xa0]
mov ah, bh
movzx edi, byte [esi + ecx + 0xa0]
mov ebx, dword [esi + 4]
movzx ebx, byte [esi + ebx + 0xa0]
add ebx, edi
mov al, byte [esi]
add al, byte [esi + edx + 0xa0]
mov byte [esi], al
movzx edi, al
movzx edi, byte [esi + edi + 0xa0]
add edi, ebx
mov edx, dword [esi + 0x20]
mov ecx, 0xff
and edi, ecx
movzx edi, byte [esi + edi + 0xa0]
xor ah, byte [esi + edi + 0xa0]
movsx edi, ah
mov word [esi + 0x18c8], di
mov al, byte [esi + 0xc]
add al, byte [esi + 0x10]
mov ch, byte [edx + 4]
mov cl, byte [edx + 5]
mov byte [esi + 0x10], cl
mov edi, dword [esi + 0x1c]
movzx edx, byte [esi + edi + 0xa0]
mov byte [esi + 0xc], al
movzx ebx, al
mov cl, byte [esi + ebx + 0xa0]
mov dword [esi + 0x18], ebx
mov byte [esi + edi + 0xa0], cl
movzx eax, ah
mov dword [esi + 0x24], eax
mov cl, byte [esi + eax + 0xa0]
mov byte [esi + ebx + 0xa0], cl
mov al, byte [esi + 8]
add al, 3
movzx edi, al
mov cl, byte [esi + edi + 0xa0]
mov eax, dword [esi + 0x24]
mov byte [esi + eax + 0xa0], cl
mov byte [esi + edi + 0xa0], dl
mov dword [esi + 4], edx
movzx edi, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x1c]
movzx ebx, byte [esi + eax + 0xa0]
add ebx, edi
mov al, byte [esi]
add al, byte [esi + edx + 0xa0]
mov byte [esi], al
movzx edi, al
movzx edx, byte [esi + edi + 0xa0]
add edx, ebx
mov al, byte [esi + 0x10]
add al, 0x1b
shl ch, 4
add ch, 0xd0
or ch, al
mov eax, dword [esi + 0x18]
movzx edi, byte [esi + eax + 0xa0]
add edi, dword [esi + 4]
mov eax, 0xff
and edi, eax
mov cl, byte [esi + edi + 0xa0]
xor cl, ch
and edx, eax
movzx edi, byte [esi + edx + 0xa0]
xor cl, byte [esi + edi + 0xa0]
movsx edi, cl
mov word [esi + 0x18ca], di
mov edi, 0xffffffe2
mov al, byte [esi + 0xc]
add al, byte [esi + 4]
movzx edx, ch
mov dword [esi + 0x10], edx
mov ebx, dword [esi + 0x20]
mov ch, byte [ebx + edi*2 + 0x42]
mov ah, byte [ebx + edi*2 + 0x43]
mov byte [esi + 8], ah
mov byte [esi + 0xc], al
movzx ebx, al
mov al, byte [esi + ebx + 0xa0]
mov byte [esi + 0x18], al
mov dword [esi + 0x1c], ebx
movzx eax, byte [esi + edx + 0xa0]
mov dword [esi + 4], eax
mov al, byte [esi + 0x18]
mov byte [esi + edx + 0xa0], al
movzx edx, cl
mov cl, byte [esi + edx + 0xa0]
mov byte [esi + ebx + 0xa0], cl
mov eax, dword [esi + 0x14]
add eax, edi
add eax, 0x22
mov ebx, 0xff
and eax, ebx
mov cl, byte [esi + eax + 0xa0]
mov byte [esi + edx + 0xa0], cl
mov ebx, dword [esi + 4]
mov byte [esi + eax + 0xa0], bl
movzx eax, byte [esi + edx + 0xa0]
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov al, byte [esi]
add al, byte [esi + ebx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx eax, byte [esi + eax + 0xa0]
add eax, edx
mov cl, byte [esi + 8]
add cl, 0x1b
shl ch, 4
add ch, 0xd0
or ch, cl
mov edx, dword [esi + 0x1c]
movzx edx, byte [esi + edx + 0xa0]
add edx, ebx
mov ebx, 0xff
and edx, ebx
mov cl, byte [esi + edx + 0xa0]
xor cl, ch
and eax, ebx
movzx eax, byte [esi + eax + 0xa0]
xor cl, byte [esi + eax + 0xa0]
movsx eax, cl
mov word [esi + edi*2 + 0x1908], ax
inc edi
jne 0x40e7cd
mov eax, dword [esi + 0x20]
mov dl, byte [eax + 0x42]
mov byte [esi + 0x18], dl
mov al, byte [eax + 0x43]
mov byte [esi + 0x24], al
mov dl, byte [esi + 0xc]
add dl, byte [esi + 4]
mov byte [esi + 0xc], dl
movzx eax, ch
mov dword [esi + 0x1c], eax
movzx ebx, dl
mov dword [esi + 4], ebx
mov ch, byte [esi + ebx + 0xa0]
movzx edx, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], ch
movzx eax, cl
mov dword [esi + 0x30], eax
mov cl, byte [esi + eax + 0xa0]
mov byte [esi + ebx + 0xa0], cl
mov dword [esi + 8], edi
mov eax, dword [esi + 0x14]
lea ecx, [eax + edi]
add ecx, 0x22
mov eax, 0xff
and ecx, eax
mov bl, byte [esi + ecx + 0xa0]
mov edi, dword [esi + 0x30]
mov byte [esi + edi + 0xa0], bl
mov eax, edx
mov dword [esi + 0x10], edx
mov byte [esi + ecx + 0xa0], al
mov cl, byte [esi + 0x24]
add cl, 0x1b
mov dh, byte [esi + 0x18]
shl dh, 4
add dh, 0xd0
or dh, cl
mov ecx, dword [esi + 4]
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, eax
mov ebx, 0xff
and ecx, ebx
movzx ebx, dh
mov dword [esi + 4], ebx
xor dh, byte [esi + ecx + 0xa0]
mov cl, byte [esi]
add cl, byte [esi + eax + 0xa0]
mov eax, ecx
mov byte [esi], cl
movzx ecx, byte [esi + edi + 0xa0]
mov ebx, dword [esi + 0x1c]
movzx ebx, byte [esi + ebx + 0xa0]
add ebx, ecx
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, ebx
mov eax, 0xff
and ecx, eax
movzx ecx, byte [esi + ecx + 0xa0]
xor dh, byte [esi + ecx + 0xa0]
movsx ecx, dh
mov word [esi + 0x1908], cx
mov dl, byte [esi + 0xc]
add dl, byte [esi + 0x10]
mov byte [esi + 0xc], dl
mov edi, dword [esi + 0x20]
mov bh, byte [edi + 0x44]
mov al, byte [edi + 0x45]
mov byte [esi + 0x1c], al
movzx edi, dl
mov dl, byte [esi + edi + 0xa0]
mov eax, dword [esi + 4]
movzx ecx, byte [esi + eax + 0xa0]
mov dword [esi + 0x10], ecx
mov byte [esi + eax + 0xa0], dl
movzx edx, dh
mov cl, byte [esi + edx + 0xa0]
mov byte [esi + edi + 0xa0], cl
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
add ecx, eax
add ecx, 0x23
mov eax, 0xff
and ecx, eax
mov bl, byte [esi + ecx + 0xa0]
mov byte [esi + edx + 0xa0], bl
mov eax, dword [esi + 0x10]
mov byte [esi + ecx + 0xa0], al
mov cl, byte [esi + 0x1c]
add cl, 0x1b
shl bh, 4
add bh, 0xd0
or bh, cl
movzx ecx, byte [esi + edi + 0xa0]
add ecx, eax
mov edi, 0xff
and ecx, edi
movzx edi, bh
mov dword [esi + 0x1c], edi
xor bh, byte [esi + ecx + 0xa0]
mov cl, byte [esi]
add cl, byte [esi + eax + 0xa0]
mov byte [esi], cl
movzx edx, byte [esi + edx + 0xa0]
mov dword [esi + 0x18], edx
mov edi, dword [esi + 4]
movzx edx, byte [esi + edi + 0xa0]
add edx, dword [esi + 0x18]
movzx ecx, cl
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov edi, 0xff
and ecx, edi
movzx ecx, byte [esi + ecx + 0xa0]
xor bh, byte [esi + ecx + 0xa0]
movsx ecx, bh
mov word [esi + 0x190a], cx
mov cl, byte [esi + 0xc]
add cl, al
mov eax, dword [esi + 0x20]
mov bl, byte [eax + 0x46]
mov al, byte [eax + 0x47]
mov byte [esi + 0x10], al
mov byte [esi + 0xc], cl
movzx edx, cl
mov dword [esi + 0x18], edx
mov al, byte [esi + edx + 0xa0]
mov byte [esi + 0x24], al
mov ecx, dword [esi + 0x1c]
movzx eax, byte [esi + ecx + 0xa0]
mov dword [esi + 4], eax
mov al, byte [esi + 0x24]
mov byte [esi + ecx + 0xa0], al
movzx ecx, bh
mov bh, byte [esi + ecx + 0xa0]
mov byte [esi + edx + 0xa0], bh
mov edx, dword [esi + 8]
mov edi, dword [esi + 0x14]
add edi, edx
add edi, 0x24
mov edx, 0xff
and edi, edx
mov bh, byte [esi + edi + 0xa0]
mov byte [esi + ecx + 0xa0], bh
mov eax, dword [esi + 4]
mov byte [esi + edi + 0xa0], al
movzx edx, byte [esi + ecx + 0xa0]
mov ecx, dword [esi + 0x1c]
movzx edi, byte [esi + ecx + 0xa0]
add edi, edx
mov dl, byte [esi]
add dl, byte [esi + eax + 0xa0]
mov byte [esi], dl
movzx edx, dl
movzx ecx, byte [esi + edx + 0xa0]
add ecx, edi
mov dl, byte [esi + 0x10]
add dl, 0x1b
shl bl, 4
add bl, 0xd0
or bl, dl
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, eax
mov eax, 0xff
and edx, eax
mov bh, byte [esi + edx + 0xa0]
xor bh, bl
and ecx, eax
movzx edx, byte [esi + ecx + 0xa0]
xor bh, byte [esi + edx + 0xa0]
movsx edx, bh
mov word [esi + 0x190c], dx
mov eax, dword [esi + 0x14]
add eax, dword [esi + 8]
add al, 0x25
mov dword [esi + 0x14], eax
xor edi, edi
mov al, byte [esi + 0xc]
add al, byte [esi + 4]
movzx ecx, bl
mov dword [esi + 8], ecx
mov edx, dword [esi + 0x20]
mov ecx, edi
mov bl, byte [edx + edi*2 + 0x48]
mov dl, byte [edx + edi*2 + 0x49]
mov byte [esi + 0x1c], dl
mov byte [esi + 0xc], al
movzx eax, al
mov dword [esi + 0x10], eax
mov dl, byte [esi + eax + 0xa0]
mov byte [esi + 0x18], dl
mov edi, dword [esi + 8]
movzx edx, byte [esi + edi + 0xa0]
mov dword [esi + 4], edx
mov dl, byte [esi + 0x18]
mov byte [esi + edi + 0xa0], dl
movzx edx, bh
mov dword [esi + 0x18], edx
mov dh, byte [esi + edx + 0xa0]
mov byte [esi + eax + 0xa0], dh
movzx edi, byte [esi + 0x14]
mov dh, byte [esi + edi + 0xa0]
mov eax, dword [esi + 0x18]
mov byte [esi + eax + 0xa0], dh
mov edx, dword [esi + 4]
mov byte [esi + edi + 0xa0], dl
movzx eax, byte [esi + eax + 0xa0]
mov edi, dword [esi + 8]
movzx edi, byte [esi + edi + 0xa0]
add edi, eax
mov al, byte [esi]
add al, byte [esi + edx + 0xa0]
mov byte [esi], al
movzx eax, al
movzx eax, byte [esi + eax + 0xa0]
add eax, edi
mov dl, byte [esi + 0x1c]
add dl, 0x1b
shl bl, 4
add bl, 0xd0
or bl, dl
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0xa0]
add edx, dword [esi + 4]
mov edi, 0xff
and edx, edi
mov bh, byte [esi + edx + 0xa0]
xor bh, bl
and eax, edi
movzx eax, byte [esi + eax + 0xa0]
xor bh, byte [esi + eax + 0xa0]
movsx eax, bh
mov word [esi + ecx*2 + 0x190e], ax
inc ecx
mov eax, dword [esi + 0x14]
inc al
mov dword [esi + 0x14], eax
mov edi, ecx
cmp ecx, 0x20
jne 0x40eba4
mov word [esi + 0x194e], 0
lea ebx, [esi + 0xa0]
lea eax, [esi + 0x18c8]
push eax
lea edi, [esi + 0x20c8]
push edi
call fcn.005ffb20
add esp, 8
lea eax, [esi + 0x16c0]
push eax
push edi
call fcn.005ffb20
add esp, 8
push 0x67ff82
push edi
call fcn.005ffb20
add esp, 8
lea eax, [esi + 0x12b0]
push eax
push edi
call fcn.005ffb20
add esp, 8
push 0x67ff96
push edi
call fcn.005ffb20
add esp, 8
push dword [ebp + 0x14]
push edi
call fcn.005ffb20
add esp, 8
lea eax, [esi + 0x14b8]
push 0x208
push 0
push eax
call fcn.005e2800
add esp, 0xc
xorpd xmm3, xmm3
movsd xmm5, qword [0x612580]
movsd xmm6, qword [0x612588]
movsd xmm7, qword [0x612590]
xorpd xmm0, xmm0
movsd xmm4, qword [0x612408]
movapd xmm1, xmm3
mulsd xmm1, qword [0x612568]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612570]
mulsd xmm2, xmm3
addsd xmm2, qword [0x612578]
divsd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm2, xmm3
mulsd xmm2, xmm5
addsd xmm2, xmm1
movapd xmm0, xmm6
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
addsd xmm3, xmm4
ucomisd xmm7, xmm3
ja 0x40ed52
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x40edfb
inc edx
sti
push ecx
invalid
lea edx, [0x40edc3]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esi + eax + 0xa0], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x40ee13
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x40edd3]
mov dword [esi + 0x10], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x18], eax
mov dword [esi + 8], ecx
shr ecx, 0x10
mov dword [esi + 0x20], ecx
mov eax, 0xff
xor ebx, ebx
xor ecx, ecx
mov dword [esi + 0x1c], edx
xor edi, edi
inc edi
cmp eax, 2
jb 0x40ee86
xor edi, edi
inc edi
add edi, edi
inc edi
cmp edi, eax
jb 0x40ee7f
mov dword [esi + 0x14], eax
mov edx, 0xc
cmp ebx, 3
mov dword [esi + 0xc], edx
ja case.default.0x40ee96
jmp dword [ebx*4 + 0x612638]
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
jmp 0x40eec8
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x20]
jmp 0x40eec8
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 0x18]
jmp 0x40eeed
movzx eax, cl
add eax, esi
add eax, 0xa0
mov ecx, dword [esi + 8]
mov cl, ch
jmp 0x40eeed
movzx eax, cl
mov cl, byte [esi + eax + 0xa0]
mov eax, dword [esi + 0x10]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x1d
cmp ebx, 0x1c
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
mov dword [esi], ecx
movzx edx, cl
mov ecx, edi
mov eax, edi
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi + 0xc]
dec edx
je 0x40ef2c
cmp eax, dword [esi + 0x14]
mov edi, ecx
mov ecx, dword [esi]
ja 0x40ee8e
jmp 0x40ef35
xor edx, edx
div dword [esi + 0x14]
mov eax, edx
mov ecx, dword [esi]
mov edi, dword [esi + 0x14]
cmp edi, eax
mov edx, dword [esi + 0x1c]
je 0x40ef6c
mov dl, byte [esi + edi + 0xa0]
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + edi + 0xa0], dl
xor dl, byte [esi + eax + 0xa0]
mov byte [esi + eax + 0xa0], dl
xor byte [esi + edi + 0xa0], dl
mov edx, dword [esi + 0x1c]
dec edi
mov eax, edi
jne 0x40ee74
movzx edi, byte [esi + 0xa1]
mov dword [esi + 0xc], edi
mov al, byte [esi + 0xa5]
mov ecx, dword [esi + 4]
movzx ecx, byte [esi + ecx + 0xa0]
mov dword [esi + 4], ecx
mov ah, byte [edx]
mov cl, byte [edx + 1]
mov byte [esi + 8], cl
mov cl, byte [esi + edi + 0xa0]
add cl, byte [esi + 0xa3]
movzx edi, cl
mov dword [esi + 0x14], edi
mov ch, byte [esi + edi + 0xa0]
movzx ebx, byte [esi + 0xa7]
mov edx, dword [esi + 4]
movzx edi, byte [esi + edx + 0xa0]
mov dword [esi], edi
mov byte [esi + edx + 0xa0], ch
mov dh, byte [esi + ebx + 0xa0]
mov edi, dword [esi + 0x14]
mov byte [esi + edi + 0xa0], dh
mov edx, dword [esi + 0xc]
mov dh, dl
inc dh
movzx edi, dh
mov dh, byte [esi + edi + 0xa0]
mov byte [esi + ebx + 0xa0], dh
mov edx, dword [esi]
mov byte [esi + edi + 0xa0], dl
movzx edi, byte [esi + ebx + 0xa0]
mov ebx, dword [esi + 4]
movzx ebx, byte [esi + ebx + 0xa0]
add ebx, edi
add al, byte [esi + edx + 0xa0]
movzx edi, al
movzx edi, byte [esi + edi + 0xa0]
add edi, ebx
mov dl, byte [esi + 8]
add dl, 0x11
shl ah, 4
add ah, 0xe0
or ah, dl
mov edx, dword [esi + 0x14]
movzx ebx, byte [esi + edx + 0xa0]
add ebx, dword [esi]
mov edx, 0xff
and ebx, edx
mov dh, byte [esi + ebx + 0xa0]
xor dh, ah
mov ebx, 0xff
and edi, ebx
movzx edi, byte [esi + edi + 0xa0]
xor dh, byte [esi + edi + 0xa0]
mov ebx, dword [esi + 0xc]
add bl, 2
movzx edi, bl
mov ebx, dword [esi]
mov dword [esi + 0xc], edi
xor edi, edi
mov byte [esi + 0x14], al
mov dl, ah
mov eax, edi
add cl, bl
mov byte [esi + 4], cl
movzx ebx, dl
mov edi, dword [esi + 0x1c]
mov dword [esi], eax
mov dl, byte [edi + eax*2 + 2]
mov ch, byte [edi + eax*2 + 3]
mov byte [esi + 8], ch
mov ah, dl
movzx edi, cl
mov dword [esi + 0x10], edi
mov dl, byte [esi + edi + 0xa0]
mov ecx, ebx
mov dword [esi + 0x18], ebx
movzx ebx, byte [esi + ebx + 0xa0]
mov byte [esi + ecx + 0xa0], dl
movzx edx, dh
mov al, byte [esi + edx + 0xa0]
mov byte [esi + edi + 0xa0], al
mov ecx, dword [esi + 0xc]
mov edi, dword [esi]
add ecx, edi
mov edi, 0xff
and ecx, edi
mov al, byte [esi + ecx + 0xa0]
mov byte [esi + edx + 0xa0], al
mov al, byte [esi + 0x14]
mov byte [esi + ecx + 0xa0], bl
movzx ecx, byte [esi + edx + 0xa0]
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
add edx, ecx
add al, byte [esi + ebx + 0xa0]
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov dl, byte [esi + 8]
add dl, 0x11
shl ah, 4
add ah, 0xe0
or ah, dl
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0xa0]
add edx, ebx
mov edi, 0xff
and edx, edi
mov dh, byte [esi + edx + 0xa0]
xor dh, ah
and ecx, edi
movzx ecx, byte [esi + ecx + 0xa0]
xor dh, byte [esi + ecx + 0xa0]
movsx ecx, dh
mov edi, dword [esi]
mov word [esi + edi*2 + 0x90], cx
mov cl, byte [esi + 4]
inc edi
cmp edi, 3
jne 0x40f07c
add dword [esi + 0xc], edi
mov edi, ebx
mov dword [esi], 0
mov byte [esi + 0x14], al
mov ebx, edi
add cl, bl
mov byte [esi + 4], cl
movzx eax, ah
mov dword [esi + 8], eax
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi]
mov ah, byte [edi + ebx + 8]
mov al, byte [edi + ebx + 9]
mov byte [esi + 0x10], al
movzx ecx, cl
mov dword [esi + 0x18], ecx
mov dl, byte [esi + ecx + 0xa0]
mov edi, dword [esi + 8]
movzx ebx, byte [esi + edi + 0xa0]
mov byte [esi + edi + 0xa0], dl
movzx edi, dh
mov al, byte [esi + edi + 0xa0]
mov byte [esi + ecx + 0xa0], al
movzx ecx, byte [esi + 0xc]
mov al, byte [esi + ecx + 0xa0]
mov byte [esi + edi + 0xa0], al
mov al, byte [esi + 0x14]
mov byte [esi + ecx + 0xa0], bl
movzx ecx, byte [esi + edi + 0xa0]
mov edx, dword [esi + 8]
movzx edx, byte [esi + edx + 0xa0]
add edx, ecx
add al, byte [esi + ebx + 0xa0]
movzx ecx, al
movzx ecx, byte [esi + ecx + 0xa0]
add ecx, edx
mov dl, byte [esi + 0x10]
add dl, 0x11
shl ah, 4
add ah, 0xe0
or ah, dl
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0xa0]
mov edi, ebx
add edx, ebx
mov ebx, 0xff
and edx, ebx
mov dh, byte [esi + edx + 0xa0]
xor dh, ah
and ecx, ebx
movzx ecx, byte [esi + ecx + 0xa0]
xor dh, byte [esi + ecx + 0xa0]
movsx ecx, dh
mov ebx, dword [esi]
mov word [esi + ebx + 0x96], cx
mov cl, byte [esi + 4]
add ebx, 2
mov dword [esi], ebx
mov ebx, dword [esi + 0xc]
inc bl
mov dword [esi + 0xc], ebx
cmp dword [esi], 0xa
jne 0x40f17f
mov word [esi + 0x9e], 0
mov dword [esi + 0x28d8], 0xffffffff
lea ebx, [esi + 0xa0]
lea eax, [esi + 0x90]
push 0x104
lea edi, [esi + 0x14b8]
push edi
push eax
call dword [esi + 0x28]
xor eax, eax
push 0x1000
push eax
push ebx
call fcn.005e2800
add esp, 0xc
mov eax, 0x67ff16
push eax
push ebx
call fcn.005ffb20
add esp, 8
push edi
push ebx
call fcn.005ffb20
add esp, 8
mov edi, 0x67ff82
push edi
push ebx
call fcn.005ffb20
add esp, 8
lea eax, [esi + 0x20c8]
push eax
push ebx
call fcn.005ffb20
add esp, 8
push 0x800
xor eax, eax
push eax
lea ebx, [esi + 0x18c8]
push ebx
call fcn.005e2800
add esp, 0xc
mov eax, 0x67ff16
push eax
push ebx
call fcn.005ffb20
add esp, 8
lea eax, [esi + 0x16c0]
push eax
push ebx
call fcn.005ffb20
add esp, 8
push edi
push ebx
call fcn.005ffb20
add esp, 8
lea eax, [esi + 0x12b0]
push eax
push ebx
call fcn.005ffb20
add esp, 8
push 0x67ff96
push ebx
call fcn.005ffb20
add esp, 8
push dword [ebp + 0x14]
push ebx
call fcn.005ffb20
add esp, 8
lea edi, [esi + 0x10a8]
mov ecx, edi
push ebx
call fcn.00406642
mov dword [esi + 0x28d8], 7
xor eax, eax
push eax
push eax
push eax
push edi
call fcn.0045af3c
add esp, 0x10
push dword [esi + 0x10c0]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0x10bc]
cmp ecx, 8
jb 0x40f3d1
mov eax, dword [esi + 0x10a8]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f3c7
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f477
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
xor eax, eax
mov byte [esi + eax + 0xa0], 0
inc eax
cmp eax, 0x1000
jne 0x40f3d3
xor eax, eax
mov byte [esi + eax + 0x14b8], 0
inc eax
cmp eax, 0x208
jne 0x40f3e5
mov eax, dword [ebp + 0x14]
cmp word [eax], 0
je 0x40f460
mov edi, 0x18
mov ebx, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push 0x1f4
push eax
call ebx
dec edi
jne 0x40f409
push 0x208
push 0
lea edi, [esi + 0x10a8]
push edi
call fcn.005e2800
add esp, 0xc
push dword [ebp + 0xc]
push edi
call fcn.005ffb20
add esp, 8
push dword [ebp + 0x10]
push edi
call fcn.005ffb20
add esp, 8
mov dword [esi + 0x28d8], 0xffffffff
push dword [esi + 0x2c]
push edi
call fcn.00409984
add esp, 8
jmp 0x40f462
xor eax, eax
mov ecx, dword [esi + 0x28d0]
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi + 0x10c0]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0x10bc]
cmp ecx, 8
jb 0x40f4d9
mov eax, dword [esi + 0x10a8]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f4cf
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f4de
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x10
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40f540
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f536
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f545
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x10
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40f5a7
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f59d
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f5ac
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x10
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40f60e
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f604
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f613
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x10
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40f675
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f66b
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f67a
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x10
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi + 0xb8]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [esi + 0xb4]
cmp ecx, 8
jb 0x40f6dc
mov eax, dword [esi + 0xa0]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x40f6d2
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x40f6e1
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x10
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x10
lea esi, [ebp - 0x28dc]
mov ebp, dword [esi + 0x28c8]
push dword [esi]
call fcn.005db40d
add esp, 0x14
pop ebp
ret