Function at 0x40ae90
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov ebx, ecx
movzx ecx, byte [ebp + 8]
cmp ecx, 0x1f
ja case.0x40aeb8.1
mov esi, edx
mov al, byte [ebp + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ebx
jmp dword [ecx*4 + 0x4c6920]
movzx edx, al
mov ecx, dword [esi]
test al, al
je 0x40aee1
lea eax, [edx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40b840
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40b840
xor ebx, ebx
xor edi, edi
xor esi, esi
test dl, 1
jne 0x40c405
mov dword [esp + 0x14], ebx
lea ebx, [ecx + 1]
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x10]
mov dword [eax], ebx
mov ebx, dword [esp + 0x14]
movzx eax, byte [ecx]
lea ecx, [ebx*8]
mov dword [esp + 8], edx
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov ecx, 0
cmovne eax, ecx
or esi, edx
mov edx, dword [esp + 8]
or edi, eax
mov eax, ebx
or eax, 1
mov ecx, dword [esp + 4]
cmp ebx, edx
mov ebx, dword [esp + 0xc]
jne 0x40c413
jmp 0x40c495
mov ecx, dword [0x4e01a8]
mov dword [esp + 8], ecx
movzx ecx, al
mov edi, esi
mov esi, dword [esi]
test al, al
je 0x40af78
lea eax, [ecx + esi]
add eax, 1
cmp eax, edi
jbe 0x40b947
lea eax, [edi + 4]
cmp esi, eax
jae 0x40b947
mov ebx, esi
xor eax, eax
xor edx, edx
xor esi, esi
test cl, 1
jne 0x40c52f
mov dword [esp + 0x14], eax
mov eax, ebx
add ebx, 1
mov dword [esp + 0x18], ebx
mov dword [edi], ebx
movzx eax, byte [eax]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx*8]
xor edi, edi
shld edi, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [esp + 0xc]
cmovne edi, eax
mov ebx, 0
cmovne eax, ebx
or esi, edi
or edx, eax
mov eax, dword [esp + 0x14]
mov edi, eax
or edi, 1
mov dword [esp + 4], edi
mov ebx, dword [esp + 0x18]
jmp 0x40c533
push dword [0x4e01a8]
push 1
push 4
push 0x4c7646
jmp 0x40b818
mov ecx, dword [0x4e01a8]
mov dword [esp + 0x18], ecx
movzx ebx, al
mov ecx, dword [esi]
test al, al
mov dword [esp + 0x14], ebx
je 0x40b021
lea eax, [ebx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40ba47
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40ba47
xor edi, edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
test bl, 1
jne 0x40c664
lea edx, [ecx + 1]
mov dword [esp + 4], edx
mov dword [esi], edx
movzx esi, byte [ecx]
lea ecx, [edi*8]
xor edx, edx
shld edx, esi, cl
shl esi, cl
xor eax, eax
test cl, 0x20
cmovne edx, esi
cmovne esi, eax
or edx, dword [esp + 8]
or esi, dword [esp + 0xc]
mov eax, edi
or eax, 1
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], esi
mov dword [esp + 8], edx
jmp 0x40c666
mov ecx, dword [0x4e01a8]
mov dword [esp + 8], ecx
movzx ecx, al
mov edi, esi
mov esi, dword [esi]
test al, al
je 0x40b0ad
lea eax, [ecx + esi]
add eax, 1
cmp eax, edi
jbe 0x40bb49
lea eax, [edi + 4]
cmp esi, eax
jae 0x40bb49
mov ebx, esi
xor eax, eax
xor edx, edx
xor esi, esi
test cl, 1
jne 0x40c7bd
mov dword [esp + 0x14], eax
mov eax, ebx
add ebx, 1
mov dword [esp + 0x18], ebx
mov dword [edi], ebx
movzx eax, byte [eax]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx*8]
xor edi, edi
shld edi, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [esp + 0xc]
cmovne edi, eax
mov ebx, 0
cmovne eax, ebx
or esi, edi
or edx, eax
mov eax, dword [esp + 0x14]
mov edi, eax
or edi, 1
mov dword [esp + 4], edi
mov ebx, dword [esp + 0x18]
jmp 0x40c7c1
mov ecx, dword [0x4e01a8]
mov dword [esp + 0x18], ecx
movzx ebx, al
mov ecx, dword [esi]
test al, al
mov dword [esp + 0x14], ebx
je 0x40b142
lea eax, [ebx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40bc47
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40bc47
xor edi, edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
test bl, 1
jne 0x40c8f5
lea edx, [ecx + 1]
mov dword [esp + 4], edx
mov dword [esi], edx
movzx esi, byte [ecx]
lea ecx, [edi*8]
xor edx, edx
shld edx, esi, cl
shl esi, cl
xor eax, eax
test cl, 0x20
cmovne edx, esi
cmovne esi, eax
or edx, dword [esp + 8]
or esi, dword [esp + 0xc]
mov eax, edi
or eax, 1
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], esi
mov dword [esp + 8], edx
jmp 0x40c8f7
mov ecx, dword [0x4e01a8]
mov dword [esp + 0x18], ecx
movzx ebx, al
mov ecx, dword [esi]
test al, al
mov dword [esp + 0x14], ebx
je 0x40b1d0
lea eax, [ebx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40bd49
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40bd49
xor edi, edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
test bl, 1
jne 0x40ca64
lea edx, [ecx + 1]
mov dword [esp + 4], edx
mov dword [esi], edx
movzx edx, byte [ecx]
lea ecx, [edi*8]
xor esi, esi
shld esi, edx, cl
shl edx, cl
xor eax, eax
test cl, 0x20
cmovne esi, edx
cmovne edx, eax
or esi, dword [esp + 8]
or edx, dword [esp + 0xc]
mov eax, edi
or eax, 1
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], edx
mov dword [esp + 8], esi
jmp 0x40ca66
movzx edx, al
mov ecx, dword [esi]
test al, al
mov dword [esp + 0x14], edx
je 0x40b254
lea eax, [edx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40be59
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40be59
xor edi, edi
xor ebx, ebx
xor esi, esi
test dl, 1
jne 0x40cbda
mov dword [esp + 0xc], edi
lea edi, [ecx + 1]
mov dword [esp + 4], edi
mov eax, dword [esp + 0x10]
mov dword [eax], edi
mov edi, dword [esp + 0xc]
movzx eax, byte [ecx]
lea ecx, [edi*8]
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov ecx, 0
cmovne eax, ecx
or esi, edx
mov edx, dword [esp + 0x14]
or ebx, eax
mov eax, edi
or eax, 1
mov ecx, dword [esp + 4]
jmp 0x40cbdc
movzx ecx, al
mov edx, dword [esi]
test al, al
mov dword [esp + 0x14], ecx
je 0x40b2d3
lea eax, [ecx + edx]
add eax, 1
cmp eax, esi
jbe 0x40bf63
lea eax, [esi + 4]
cmp edx, eax
jae 0x40bf63
xor eax, eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
test cl, 1
jne 0x40cd2f
mov edi, eax
mov eax, edx
add edx, 1
mov dword [esi], edx
movzx esi, byte [eax]
lea ecx, [edi*8]
xor ebx, ebx
shld ebx, esi, cl
shl esi, cl
xor eax, eax
test cl, 0x20
cmovne ebx, esi
cmovne esi, eax
or ebx, dword [esp + 8]
or esi, dword [esp + 0xc]
mov eax, edi
or eax, 1
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebx
jmp 0x40cd31
movzx edx, al
mov ecx, dword [esi]
test al, al
je 0x40b353
lea eax, [edx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40c063
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40c063
xor eax, eax
xor edi, edi
xor esi, esi
test dl, 1
mov dword [esp + 0x14], eax
jne 0x40b3ab
lea ebx, [ecx + 1]
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x10]
mov dword [eax], ebx
movzx eax, byte [ecx]
mov ebx, dword [esp + 0x14]
lea ecx, [ebx*8]
mov dword [esp + 8], edx
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov ecx, 0
cmovne eax, ecx
or esi, edx
mov edx, dword [esp + 8]
or edi, eax
mov eax, ebx
or eax, 1
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
cmp dword [esp + 0x14], edx
je 0x40ce8c
add ecx, 1
sub edx, eax
add edx, 1
shl eax, 3
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edx, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edx, cl
shl edx, cl
test al, 0x20
cmovne ebx, edx
mov ecx, 0
cmovne edx, ecx
or ebx, esi
or edx, edi
mov ecx, dword [esp + 4]
add ecx, 1
mov esi, dword [esp + 0x10]
mov dword [esi], ecx
mov ecx, dword [esp + 4]
movzx edi, byte [ecx]
mov ecx, eax
add cl, 8
xor esi, esi
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
mov ecx, dword [esp + 4]
or esi, ebx
or edi, edx
mov edx, dword [esp + 8]
add ecx, 2
add eax, 0x10
add edx, 0xfffffffe
jne 0x40b3c0
mov ebx, dword [esp + 0xc]
jmp 0x40ce8c
movzx edx, al
mov ecx, dword [esi]
test al, al
je 0x40b45c
lea eax, [edx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40c168
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40c168
xor eax, eax
xor edi, edi
xor esi, esi
test dl, 1
mov dword [esp + 0x14], eax
jne 0x40d070
mov dword [esp + 8], edx
lea edx, [ecx + 1]
mov dword [esp + 0x18], edx
mov ebx, eax
mov eax, dword [esp + 0x10]
mov dword [eax], edx
movzx edx, byte [ecx]
lea ecx, [ebx*8]
xor eax, eax
shld eax, edx, cl
shl edx, cl
xor ebx, ebx
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
mov ebx, dword [esp + 0xc]
or esi, eax
or edx, edi
mov eax, dword [esp + 0x14]
or eax, 1
mov dword [esp + 4], edx
mov edi, edx
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 8]
jmp 0x40d078
movzx edx, al
mov ecx, dword [esi]
test al, al
je 0x40b4e2
lea eax, [edx + ecx]
add eax, 1
cmp eax, esi
jbe 0x40c275
lea eax, [esi + 4]
cmp ecx, eax
jae 0x40c275
xor eax, eax
xor edi, edi
xor esi, esi
test dl, 1
mov dword [esp + 0x14], eax
jne 0x40b53a
lea ebx, [ecx + 1]
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x10]
mov dword [eax], ebx
movzx eax, byte [ecx]
mov ebx, dword [esp + 0x14]
lea ecx, [ebx*8]
mov dword [esp + 8], edx
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov ecx, 0
cmovne eax, ecx
or esi, edx
mov edx, dword [esp + 8]
or edi, eax
mov eax, ebx
or eax, 1
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
cmp dword [esp + 0x14], edx
je 0x40d1a1
add ecx, 1
sub edx, eax
add edx, 1
shl eax, 3
nop
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edx, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edx, cl
shl edx, cl
test al, 0x20
cmovne ebx, edx
mov ecx, 0
cmovne edx, ecx
or ebx, esi
or edx, edi
mov ecx, dword [esp + 4]
add ecx, 1
mov esi, dword [esp + 0x10]
mov dword [esi], ecx
mov ecx, dword [esp + 4]
movzx edi, byte [ecx]
mov ecx, eax
add cl, 8
xor esi, esi
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
mov ecx, dword [esp + 4]
or esi, ebx
or edi, edx
mov edx, dword [esp + 8]
add ecx, 2
add eax, 0x10
add edx, 0xfffffffe
jne 0x40b550
mov ebx, dword [esp + 0xc]
jmp 0x40d1a1
push dword [0x4e01a8]
push 0x7b
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
mov eax, dword [esi]
movzx ebx, byte [eax]
test bl, bl
js 0x40d260
add eax, 1
mov dword [esi], eax
test ebx, ebx
je 0x40b63a
mov edi, esi
nop word cs:[eax + eax]
nop dword [eax]
push dword [0x4e01a8]
push 0x20
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
mov eax, dword [edi]
lea ecx, [eax + 1]
mov dword [edi], ecx
movzx eax, byte [eax]
mov ecx, eax
shr cl, 5
and eax, 0x1f
movzx esi, cl
mov ecx, dword [esp + 0xc]
mov edx, edi
push esi
push eax
call fcn.0040ae90
add esp, 8
add ebx, 0xffffffff
jne 0x40b600
push dword [0x4e01a8]
push 1
push 2
push 0x4c763e
jmp 0x40b818
mov ecx, dword [esi]
movzx eax, byte [ecx]
test al, al
js 0x40d283
add ecx, 1
mov dword [esi], ecx
xor ecx, ecx
cmp ax, 0xffff
je 0x40b68e
mov edx, dword [ebx + 0x2c]
movzx eax, ax
mov eax, dword [edx + eax*4]
cmp eax, 0xffffffff
je 0x40b68e
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x28]
mov eax, dword [edx + eax*4]
cmp byte [ecx + eax], 0
js 0x40d2d9
add ecx, eax
add ecx, 1
push dword [0x4e01a8]
push ecx
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputs
add esp, 8
mov eax, dword [esi]
movzx edx, byte [eax]
test dl, dl
js 0x40d2a6
add eax, 1
mov dword [esi], eax
test edx, edx
je 0x40d1d8
add edx, 0xffffffff
mov edi, edx
movzx ebx, byte [eax]
test bl, bl
js 0x40b770
nop word [eax + eax]
add eax, 1
mov dword [esi], eax
push dword [0x4e01a8]
push 0x20
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
cmp ebx, 0xffffffff
je 0x40b710
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x28]
mov ecx, dword [ecx + ebx*4]
cmp byte [eax + ecx], 0
js 0x40b78f
add eax, ecx
add eax, 1
jmp 0x40b712
xor eax, eax
mov ebx, dword [esp + 0xc]
push dword [0x4e01a8]
push eax
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputs
add esp, 8
push dword [0x4e01a8]
push 0x3d
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
mov eax, dword [esi]
lea ecx, [eax + 1]
mov dword [esi], ecx
movzx eax, byte [eax]
mov ecx, eax
shr cl, 5
and eax, 0x1f
mov edx, esi
movzx esi, cl
mov ecx, ebx
push esi
mov esi, edx
push eax
call fcn.0040ae90
add esp, 8
sub edi, 1
jb 0x40d1d8
mov eax, dword [esi]
movzx ebx, byte [eax]
test bl, bl
jns 0x40b6d0
movzx ecx, byte [eax + 1]
mov edx, ebx
and edx, 0x7f
mov ebx, ecx
and ebx, 0x7f
shl ebx, 7
or ebx, edx
test cl, cl
js 0x40b7a3
add eax, 2
jmp 0x40b6d3
add eax, ecx
cmp byte [eax + 1], 0
mov ebx, dword [esp + 0xc]
js 0x40b7bd
add eax, 2
jmp 0x40b716
movzx ecx, byte [eax + 2]
mov edx, ecx
and edx, 0x7f
shl edx, 0xe
or ebx, edx
test cl, cl
js 0x40b7cb
add eax, 3
jmp 0x40b6d3
cmp byte [eax + 2], 0
js 0x40b7e5
add eax, 3
jmp 0x40b716
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0x7f
shl edx, 0x15
or ebx, edx
test cl, cl
js 0x40b7f8
add eax, 4
jmp 0x40b6d3
mov cl, byte [eax + 3]
shr cl, 7
movzx ecx, cl
add eax, ecx
add eax, 4
jmp 0x40b716
movzx ecx, byte [eax + 4]
add eax, 5
shl ecx, 0x1c
or ebx, ecx
jmp 0x40b6d3
push dword [0x4e01a8]
push 1
push 4
push str.null
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fwrite
add esp, 0x10
jmp 0x40d1d8
test al, al
mov eax, 0x4c76b5
mov ecx, 0x4c76b0
cmove ecx, eax
push dword [0x4e01a8]
push ecx
jmp 0x40d1d0
mov dword [esp + 4], ecx
lea ebx, [edx + 1]
mov dword [esp + 0x14], ebx
and ebx, 0xfffffffe
lea ecx, [ebx - 2]
mov eax, ecx
shr eax, 1
add eax, 1
test ecx, ecx
je 0x40c385
mov dword [esp + 8], edx
mov dword [esp + 0x18], eax
and eax, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor edi, edi
mov ecx, dword [esp + 4]
nop dword [eax + eax]
movzx edx, word [ecx + edi*2]
movd xmm5, edx
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edx, word [ecx + edi*2 + 2]
movd xmm0, edx
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add edi, 2
add esi, 0xfffffffc
cmp eax, edi
jne 0x40b890
sub ecx, esi
neg esi
mov eax, dword [esp + 0x10]
mov edi, eax
mov dword [eax], ecx
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x18]
jmp 0x40c395
mov dword [esp + 0xc], ecx
lea eax, [ecx + 1]
mov dword [esp + 4], eax
and eax, 0xfffffffe
lea ecx, [eax - 2]
mov ebx, ecx
shr ebx, 1
add ebx, 1
test ecx, ecx
je 0x40c4aa
mov dword [esp + 0x14], eax
mov eax, ebx
and eax, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor edx, edx
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
mov ecx, esi
xor esi, esi
nop
movzx edi, word [ecx + esi*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [ecx + esi*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add esi, 2
add edx, 0xfffffffc
cmp eax, esi
jne 0x40b990
mov eax, ecx
sub eax, edx
neg edx
mov esi, dword [esp + 0x10]
mov edi, esi
mov dword [esi], eax
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov esi, ecx
mov eax, dword [esp + 0x14]
jmp 0x40c4b8
mov dword [esp + 4], ecx
lea edi, [ebx + 1]
mov dword [esp + 0xc], edi
and edi, 0xfffffffe
lea edx, [edi - 2]
mov ecx, edx
shr ecx, 1
add ecx, 1
test edx, edx
je 0x40c5d6
mov dword [esp + 8], edi
mov ebx, ecx
and ebx, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor edx, edx
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor esi, esi
mov eax, dword [esp + 4]
movzx edi, word [eax + esi*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [eax + esi*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add esi, 2
add edx, 0xfffffffc
cmp ebx, esi
jne 0x40ba90
mov esi, eax
sub esi, edx
neg edx
mov eax, dword [esp + 0x10]
mov dword [eax], esi
mov esi, eax
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 8]
jmp 0x40c5e4
mov dword [esp + 0xc], ecx
lea eax, [ecx + 1]
mov dword [esp + 4], eax
and eax, 0xfffffffe
lea ecx, [eax - 2]
mov ebx, ecx
shr ebx, 1
add ebx, 1
test ecx, ecx
je 0x40c738
mov dword [esp + 0x14], eax
mov eax, ebx
and eax, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor edx, edx
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
mov ecx, esi
xor esi, esi
movzx edi, word [ecx + esi*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [ecx + esi*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add esi, 2
add edx, 0xfffffffc
cmp eax, esi
jne 0x40bb90
mov eax, ecx
sub eax, edx
neg edx
mov esi, dword [esp + 0x10]
mov edi, esi
mov dword [esi], eax
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov esi, ecx
mov eax, dword [esp + 0x14]
jmp 0x40c746
mov dword [esp + 4], ecx
lea edi, [ebx + 1]
mov dword [esp + 0xc], edi
and edi, 0xfffffffe
lea edx, [edi - 2]
mov ecx, edx
shr ecx, 1
add ecx, 1
test edx, edx
je 0x40c867
mov dword [esp + 8], edi
mov ebx, ecx
and ebx, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor edx, edx
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor esi, esi
mov eax, dword [esp + 4]
movzx edi, word [eax + esi*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [eax + esi*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add esi, 2
add edx, 0xfffffffc
cmp ebx, esi
jne 0x40bc90
mov esi, eax
sub esi, edx
neg edx
mov eax, dword [esp + 0x10]
mov dword [eax], esi
mov esi, eax
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 8]
jmp 0x40c875
mov dword [esp + 4], ecx
lea edi, [ebx + 1]
mov dword [esp + 0xc], edi
and edi, 0xfffffffe
lea edx, [edi - 2]
mov ecx, edx
shr ecx, 1
add ecx, 1
test edx, edx
je 0x40c9d6
mov dword [esp + 8], edi
mov ebx, ecx
and ebx, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor edx, edx
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor esi, esi
mov eax, dword [esp + 4]
nop word cs:[eax + eax]
nop dword [eax]
movzx edi, word [eax + esi*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [eax + esi*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add esi, 2
add edx, 0xfffffffc
cmp ebx, esi
jne 0x40bda0
mov esi, eax
sub esi, edx
neg edx
mov eax, dword [esp + 0x10]
mov dword [eax], esi
mov esi, eax
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 8]
jmp 0x40c9e4
mov dword [esp + 4], ecx
lea edi, [edx + 1]
mov dword [esp + 8], edi
and edi, 0xfffffffe
lea edx, [edi - 2]
mov ecx, edx
shr ecx, 1
add ecx, 1
test edx, edx
je 0x40cb4f
mov dword [esp + 0xc], edi
mov ebx, ecx
and ebx, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor edx, edx
mov eax, dword [esp + 4]
nop word cs:[eax + eax]
nop dword [eax]
movzx edi, word [eax + edx*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [eax + edx*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add edx, 2
add esi, 0xfffffffc
cmp ebx, edx
jne 0x40beb0
mov edx, eax
sub edx, esi
neg esi
mov eax, dword [esp + 0x10]
mov dword [eax], edx
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov edi, dword [esp + 0xc]
jmp 0x40cb5d
mov dword [esp + 4], edx
lea ebx, [ecx + 1]
mov eax, ebx
and eax, 0xfffffffe
mov dword [esp + 0x18], eax
lea edx, [eax - 2]
mov eax, edx
shr eax, 1
add eax, 1
test edx, edx
je 0x40cc9c
mov dword [esp + 0xc], ebx
mov ecx, eax
and ecx, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor ebx, ebx
mov edx, dword [esp + 4]
nop
movzx edi, word [edx + ebx*2]
movd xmm5, edi
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edi, word [edx + ebx*2 + 2]
movd xmm0, edi
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add ebx, 2
add esi, 0xfffffffc
cmp ecx, ebx
jne 0x40bfb0
sub edx, esi
neg esi
mov ecx, dword [esp + 0x10]
mov edi, ecx
mov dword [ecx], edx
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov ebx, dword [esp + 0xc]
jmp 0x40ccac
mov dword [esp + 4], ecx
lea eax, [edx + 1]
mov dword [esp + 0x18], eax
and eax, 0xfffffffe
lea ecx, [eax - 2]
mov edi, ecx
shr edi, 1
add edi, 1
test ecx, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
je 0x40ce0e
mov dword [esp + 8], edx
mov eax, edi
and eax, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor edi, edi
mov ecx, dword [esp + 4]
nop word cs:[eax + eax]
nop
movzx edx, word [ecx + edi*2]
movd xmm5, edx
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edx, word [ecx + edi*2 + 2]
movd xmm0, edx
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add edi, 2
add esi, 0xfffffffc
cmp eax, edi
jne 0x40c0c0
sub ecx, esi
neg esi
mov eax, dword [esp + 0x10]
mov dword [eax], ecx
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x14]
jmp 0x40ce1c
mov dword [esp + 4], ecx
lea eax, [edx + 1]
mov dword [esp + 0x18], eax
and eax, 0xfffffffe
lea ecx, [eax - 2]
mov edi, ecx
shr edi, 1
add edi, 1
test ecx, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
je 0x40cfde
mov dword [esp + 8], edx
mov eax, edi
and eax, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor edi, edi
mov ecx, dword [esp + 4]
nop dword [eax]
movzx edx, word [ecx + edi*2]
movd xmm5, edx
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edx, word [ecx + edi*2 + 2]
movd xmm0, edx
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add edi, 2
add esi, 0xfffffffc
cmp eax, edi
jne 0x40c1c0
sub ecx, esi
neg esi
mov eax, dword [esp + 0x10]
mov dword [eax], ecx
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x14]
jmp 0x40cfec
mov dword [esp + 4], ecx
lea eax, [edx + 1]
mov dword [esp + 0x18], eax
and eax, 0xfffffffe
lea ecx, [eax - 2]
mov edi, ecx
shr edi, 1
add edi, 1
test ecx, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
je 0x40d130
mov dword [esp + 8], edx
mov eax, edi
and eax, 0xfffffffe
pxor xmm2, xmm2
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
movdqa xmm4, xmmword [0x4c6910]
xorpd xmm0, xmm0
xor edi, edi
mov ecx, dword [esp + 4]
nop word cs:[eax + eax]
movzx edx, word [ecx + edi*2]
movd xmm5, edx
punpcklbw xmm5, xmm2
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm2
movdqa xmm6, xmm1
pslld xmm6, 3
xorps xmm7, xmm7
movss xmm7, xmm6
movdqa xmm3, xmm5
psllq xmm3, xmm7
movdqa xmm7, xmm6
psrlq xmm7, 0x20
psllq xmm5, xmm7
movsd xmm5, xmm3
orpd xmm5, xmm0
movzx edx, word [ecx + edi*2 + 2]
movd xmm0, edx
punpcklbw xmm0, xmm2
punpcklwd xmm0, xmm2
punpckldq xmm0, xmm2
paddd xmm6, xmmword [0x4c6900]
xorpd xmm3, xmm3
movss xmm3, xmm6
movdqa xmm7, xmm0
psllq xmm7, xmm3
psrlq xmm6, 0x20
psllq xmm0, xmm6
movsd xmm0, xmm7
orpd xmm0, xmm5
paddd xmm1, xmm4
add edi, 2
add esi, 0xfffffffc
cmp eax, edi
jne 0x40c2d0
sub ecx, esi
neg esi
mov eax, dword [esp + 0x10]
mov dword [eax], ecx
pslld xmm1, 3
pxor xmm2, xmm2
punpckldq xmm1, xmm2
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x14]
jmp 0x40d13e
mov edi, esi
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor esi, esi
test al, 1
mov ecx, dword [esp + 4]
je 0x40c3da
mov eax, esi
or eax, 1
add eax, ecx
add eax, 1
mov dword [edi], eax
movzx eax, word [ecx + esi]
movd xmm2, eax
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edi, xmm1
cmp dword [esp + 0x14], ebx
je 0x40c491
add ecx, ebx
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test dl, 1
je 0x40aef0
mov eax, ebx
cmp ebx, edx
mov ebx, dword [esp + 0xc]
je 0x40c495
add ecx, 1
sub edx, eax
add edx, 1
shl eax, 3
nop
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edx, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edx, cl
shl edx, cl
test al, 0x20
cmovne ebx, edx
mov ecx, 0
cmovne edx, ecx
or ebx, esi
or edx, edi
mov ecx, dword [esp + 4]
add ecx, 1
mov esi, dword [esp + 0x10]
mov dword [esi], ecx
mov ecx, dword [esp + 4]
movzx edi, byte [ecx]
mov ecx, eax
add cl, 8
xor esi, esi
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
mov ecx, dword [esp + 4]
or esi, ebx
or edi, edx
mov edx, dword [esp + 8]
add ecx, 2
add eax, 0x10
add edx, 0xfffffffe
jne 0x40c420
mov ebx, dword [esp + 0xc]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax + edi*8 + 4]
cmp ecx, 0xffffffff
jne 0x40d1ad
jmp 0x40d1c7
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor edx, edx
test bl, 1
mov ecx, dword [esp + 0xc]
je 0x40c502
mov ebx, eax
mov eax, edx
or eax, 1
add eax, esi
add eax, 1
mov dword [edi], eax
movzx eax, word [esi + edx]
movd xmm2, eax
mov eax, ebx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edx, xmm1
cmp dword [esp + 4], eax
je 0x40c5c4
add esi, eax
mov ebx, esi
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test cl, 1
je 0x40af89
mov dword [esp + 4], eax
mov edi, dword [esp + 8]
cmp eax, ecx
je 0x40c5c8
mov eax, ebx
add eax, 1
mov edi, dword [esp + 4]
sub ecx, edi
add ecx, 1
shl edi, 3
mov dword [esp + 4], edi
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
movzx ebx, byte [eax - 1]
xor edi, edi
mov ecx, dword [esp + 4]
shld edi, ebx, cl
mov ecx, dword [esp + 4]
shl ebx, cl
test byte [esp + 4], 0x20
cmovne edi, ebx
mov ecx, 0
cmovne ebx, ecx
or edi, esi
or ebx, edx
lea ecx, [eax + 1]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edx, byte [eax]
mov ecx, dword [esp + 4]
add cl, 8
xor esi, esi
shld esi, edx, cl
shl edx, cl
test cl, 0x20
cmovne esi, edx
mov ecx, 0
cmovne edx, ecx
mov ecx, dword [esp + 0xc]
or esi, edi
or edx, ebx
mov edi, dword [esp + 4]
add eax, 2
add edi, 0x10
add ecx, 0xfffffffe
jne 0x40c550
mov edi, dword [esp + 8]
movsx eax, dl
push eax
push 0x4c7630
jmp 0x40c861
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor edx, edx
test cl, 1
je 0x40c62a
mov ecx, edx
or ecx, 1
mov eax, dword [esp + 4]
add ecx, eax
add ecx, 1
mov dword [esi], ecx
movzx ecx, word [eax + edx]
movd xmm2, ecx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd eax, xmm1
pshufd xmm0, xmm1, 0x55
movd edx, xmm0
cmp dword [esp + 0xc], edi
jne 0x40c64d
mov esi, eax
jmp 0x40c709
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 4]
add ecx, edi
test bl, 1
je 0x40b03c
mov eax, edi
cmp edi, ebx
mov edi, dword [esp + 0x10]
je 0x40c709
add ecx, 1
mov ebx, dword [esp + 0x14]
sub ebx, eax
add ebx, 1
shl eax, 3
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
nop dword [eax]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ecx
mov dword [edi], ecx
movzx edi, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edi, cl
shl edi, cl
test al, 0x20
cmovne ebx, edi
mov ecx, 0
cmovne edi, ecx
or ebx, edx
or edi, esi
mov ecx, dword [esp + 4]
add ecx, 1
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
mov ecx, dword [esp + 4]
movzx esi, byte [ecx]
mov ecx, eax
add cl, 8
xor edx, edx
shld edx, esi, cl
shl esi, cl
test cl, 0x20
mov ecx, dword [esp + 4]
cmovne edx, esi
mov eax, 0
cmovne esi, eax
mov eax, dword [esp + 8]
or edx, ebx
mov ebx, dword [esp + 0xc]
or esi, edi
mov edi, dword [esp + 0x10]
add ecx, 2
add eax, 0x10
add ebx, 0xfffffffe
jne 0x40c690
mov eax, dword [esp + 0x14]
shl al, 3
mov cl, 0x38
sub cl, al
shld edx, esi, cl
shl esi, cl
xor eax, eax
test cl, 0x20
cmovne edx, esi
cmove eax, esi
shrd eax, edx, cl
sar edx, cl
test cl, 0x20
cmove edx, eax
movsx eax, dx
push eax
jmp 0x40c9c0
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor edx, edx
test bl, 1
mov ecx, dword [esp + 0xc]
je 0x40c790
mov ebx, eax
mov eax, edx
or eax, 1
add eax, esi
add eax, 1
mov dword [edi], eax
movzx eax, word [esi + edx]
movd xmm2, eax
mov eax, ebx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edx, xmm1
cmp dword [esp + 4], eax
je 0x40c854
add esi, eax
mov ebx, esi
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test cl, 1
je 0x40b0be
mov dword [esp + 4], eax
mov edi, dword [esp + 8]
cmp eax, ecx
je 0x40c858
mov eax, ebx
add eax, 1
mov edi, dword [esp + 4]
sub ecx, edi
add ecx, 1
shl edi, 3
nop
mov dword [esp + 4], edi
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
movzx ebx, byte [eax - 1]
xor edi, edi
mov ecx, dword [esp + 4]
shld edi, ebx, cl
mov ecx, dword [esp + 4]
shl ebx, cl
test byte [esp + 4], 0x20
cmovne edi, ebx
mov ecx, 0
cmovne ebx, ecx
or edi, esi
or ebx, edx
lea ecx, [eax + 1]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edx, byte [eax]
mov ecx, dword [esp + 4]
add cl, 8
xor esi, esi
shld esi, edx, cl
shl edx, cl
test cl, 0x20
cmovne esi, edx
mov ecx, 0
cmovne edx, ecx
mov ecx, dword [esp + 0xc]
or esi, edi
or edx, ebx
mov edi, dword [esp + 4]
add eax, 2
add edi, 0x10
add ecx, 0xfffffffe
jne 0x40c7e0
mov edi, dword [esp + 8]
movzx eax, dx
push eax
push 0x4c7633
push edi
jmp 0x40c9c9
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor edx, edx
test cl, 1
je 0x40c8bb
mov ecx, edx
or ecx, 1
mov eax, dword [esp + 4]
add ecx, eax
add ecx, 1
mov dword [esi], ecx
movzx ecx, word [eax + edx]
movd xmm2, ecx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd eax, xmm1
pshufd xmm0, xmm1, 0x55
movd edx, xmm0
cmp dword [esp + 0xc], edi
jne 0x40c8de
mov esi, eax
jmp 0x40c999
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 4]
add ecx, edi
test bl, 1
je 0x40b15d
mov eax, edi
cmp edi, ebx
mov edi, dword [esp + 0x10]
je 0x40c999
add ecx, 1
mov ebx, dword [esp + 0x14]
sub ebx, eax
add ebx, 1
shl eax, 3
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
nop word [eax + eax]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ecx
mov dword [edi], ecx
movzx edi, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edi, cl
shl edi, cl
test al, 0x20
cmovne ebx, edi
mov ecx, 0
cmovne edi, ecx
or ebx, edx
or edi, esi
mov ecx, dword [esp + 4]
add ecx, 1
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
mov ecx, dword [esp + 4]
movzx esi, byte [ecx]
mov ecx, eax
add cl, 8
xor edx, edx
shld edx, esi, cl
shl esi, cl
test cl, 0x20
mov ecx, dword [esp + 4]
cmovne edx, esi
mov eax, 0
cmovne esi, eax
mov eax, dword [esp + 8]
or edx, ebx
mov ebx, dword [esp + 0xc]
or esi, edi
mov edi, dword [esp + 0x10]
add ecx, 2
add eax, 0x10
add ebx, 0xfffffffe
jne 0x40c920
mov eax, dword [esp + 0x14]
shl al, 3
mov cl, 0x38
sub cl, al
shld edx, esi, cl
shl esi, cl
xor eax, eax
test cl, 0x20
cmovne edx, esi
cmove eax, esi
shrd eax, edx, cl
sar edx, cl
test cl, 0x20
cmove edx, eax
push edx
push 0x4c7630
push dword [esp + 0x20]
call fcn.00410d00
add esp, 0xc
jmp 0x40d1d8
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor edx, edx
test cl, 1
je 0x40ca2a
mov ecx, edx
or ecx, 1
mov eax, dword [esp + 4]
add ecx, eax
add ecx, 1
mov dword [esi], ecx
movzx ecx, word [eax + edx]
movd xmm2, ecx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
cmp dword [esp + 0xc], edi
jne 0x40ca4d
mov esi, eax
jmp 0x40cb09
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 4]
add ecx, edi
test bl, 1
je 0x40b1eb
mov eax, edi
cmp edi, ebx
mov edi, dword [esp + 0x10]
je 0x40cb09
add ecx, 1
mov ebx, dword [esp + 0x14]
sub ebx, eax
add ebx, 1
shl eax, 3
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 8]
nop dword [eax]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ecx
mov dword [edi], ecx
movzx edi, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edi, cl
shl edi, cl
test al, 0x20
cmovne ebx, edi
mov ecx, 0
cmovne edi, ecx
or ebx, esi
or edi, edx
mov ecx, dword [esp + 4]
add ecx, 1
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
mov ecx, dword [esp + 4]
movzx edx, byte [ecx]
mov ecx, eax
add cl, 8
xor esi, esi
shld esi, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, dword [esp + 4]
cmovne esi, edx
mov eax, 0
cmovne edx, eax
mov eax, dword [esp + 8]
or esi, ebx
mov ebx, dword [esp + 0xc]
or edx, edi
mov edi, dword [esp + 0x10]
add ecx, 2
add eax, 0x10
add ebx, 0xfffffffe
jne 0x40ca90
mov eax, dword [esp + 0x14]
shl al, 3
mov cl, 0x38
sub cl, al
shld esi, edx, cl
shl edx, cl
test cl, 0x20
cmovne esi, edx
mov eax, esi
sar eax, cl
mov edi, esi
sar edi, 0x1f
test cl, 0x20
cmove edi, eax
xor ebx, ebx
test cl, 0x20
cmove ebx, edx
shrd ebx, esi, cl
test cl, 0x20
cmovne ebx, eax
push edi
push ebx
push 0x4c7636
push dword [esp + 0x24]
jmp 0x40ce01
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor esi, esi
test cl, 1
mov edx, dword [esp + 0x14]
je 0x40cbab
mov ecx, esi
or ecx, 1
mov eax, dword [esp + 4]
add ecx, eax
add ecx, 1
mov ebx, dword [esp + 0x10]
mov dword [ebx], ecx
movzx ecx, word [eax + esi]
movd xmm2, ecx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd ebx, xmm1
cmp dword [esp + 8], edi
je 0x40cc6d
mov ecx, dword [esp + 4]
add ecx, edi
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test dl, 1
je 0x40b263
mov eax, edi
cmp edi, edx
je 0x40cc6d
add ecx, 1
sub edx, eax
add edx, 1
shl eax, 3
nop
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edi, byte [ecx - 1]
xor edx, edx
mov ecx, eax
shld edx, edi, cl
shl edi, cl
test al, 0x20
cmovne edx, edi
mov ecx, 0
cmovne edi, ecx
or edx, esi
or edi, ebx
mov ecx, dword [esp + 4]
add ecx, 1
mov esi, dword [esp + 0x10]
mov dword [esi], ecx
mov ecx, dword [esp + 4]
movzx ebx, byte [ecx]
mov ecx, eax
add cl, 8
xor esi, esi
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
mov ecx, dword [esp + 4]
cmovne esi, ebx
mov eax, 0
cmovne ebx, eax
mov eax, dword [esp + 8]
or esi, edx
mov edx, dword [esp + 0xc]
or ebx, edi
add ecx, 2
add eax, 0x10
add edx, 0xfffffffe
jne 0x40cbf0
mov edx, dword [esp + 0x14]
shl dl, 3
mov cl, 0x18
sub cl, dl
shl ebx, cl
movd xmm0, ebx
mov eax, dword [0x4e01a8]
cvtss2sd xmm0, xmm0
sub esp, 0x10
mov dword [esp], eax
movsd qword [esp + 8], xmm0
mov dword [esp + 4], 0x4c763b
jmp 0x40ce01
mov edi, esi
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor esi, esi
test al, 1
mov edx, dword [esp + 4]
je 0x40ccf1
mov ecx, esi
or ecx, 1
add ecx, edx
add ecx, 1
mov dword [edi], ecx
movzx ecx, word [edx + esi]
movd xmm2, ecx
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd esi, xmm1
pshufd xmm0, xmm1, 0x55
movd ecx, xmm0
mov eax, dword [esp + 0x18]
cmp ebx, eax
jne 0x40cd16
mov ebx, ecx
jmp 0x40cdd9
mov dword [esp + 8], ecx
mov dword [esp + 0xc], esi
add edx, eax
mov ecx, dword [esp + 0x14]
mov esi, edi
test cl, 1
je 0x40b2ee
mov edi, eax
cmp edi, ecx
mov edi, dword [esp + 0x10]
je 0x40cdd9
add edx, 1
mov ecx, dword [esp + 0x14]
sub ecx, eax
add ecx, 1
shl eax, 3
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
nop word cs:[eax + eax]
nop
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 4], edx
mov dword [edi], edx
movzx edi, byte [edx - 1]
xor edx, edx
mov ecx, eax
shld edx, edi, cl
shl edi, cl
test al, 0x20
cmovne edx, edi
mov ecx, 0
cmovne edi, ecx
or edx, ebx
or edi, esi
mov ecx, dword [esp + 4]
add ecx, 1
mov esi, dword [esp + 0x10]
mov dword [esi], ecx
mov ecx, dword [esp + 4]
movzx esi, byte [ecx]
mov ecx, eax
add cl, 8
xor ebx, ebx
shld ebx, esi, cl
shl esi, cl
test cl, 0x20
mov ecx, dword [esp + 0xc]
cmovne ebx, esi
mov eax, 0
cmovne esi, eax
mov eax, dword [esp + 8]
or ebx, edx
mov edx, dword [esp + 4]
or esi, edi
mov edi, dword [esp + 0x10]
add edx, 2
add eax, 0x10
add ecx, 0xfffffffe
jne 0x40cd60
mov eax, dword [esp + 0x14]
shl al, 3
mov cl, 0x38
sub cl, al
shld ebx, esi, cl
shl esi, cl
xor eax, eax
test cl, 0x20
cmovne ebx, esi
cmove eax, esi
push ebx
push eax
push 0x4c763b
push dword [0x4e01a8]
call fcn.00410d00
add esp, 0x10
jmp 0x40d1d8
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68f0]
xor esi, esi
test byte [esp + 0x1c], 1
mov ecx, dword [esp + 4]
je 0x40ce75
mov eax, esi
or eax, 1
add eax, ecx
add eax, 1
mov edi, dword [esp + 0x10]
mov dword [edi], eax
movzx eax, word [ecx + esi]
movd xmm2, eax
mov eax, dword [esp + 0x14]
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
pslld xmm1, 3
movss xmm3, xmm1
movdqa xmm4, xmm2
psllq xmm4, xmm3
psrlq xmm1, 0x20
psllq xmm2, xmm1
movsd xmm2, xmm4
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edi, xmm1
cmp dword [esp + 0x18], eax
jne 0x40cfac
cmp dword [0x4e01a0], 0
je 0x40ced5
cmp edi, 0xffffffff
je 0x40cf95
mov esi, dword [ebx + 0xc]
mov eax, dword [ebx + 0x28]
mov eax, dword [eax + edi*4]
movzx ebx, byte [esi + eax]
test bl, bl
js 0x40d2ed
add esi, eax
add esi, 1
cmp byte [esi + ebx], 0
je 0x40cf9c
lea eax, [esi + ebx]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
add ebx, eax
jmp 0x40cf9c
cmp edi, 0xffffffff
je 0x40cfc9
mov esi, dword [ebx + 0xc]
mov eax, dword [ebx + 0x28]
mov eax, dword [eax + edi*4]
movzx ebx, byte [esi + eax]
test bl, bl
js 0x40d387
add esi, eax
add esi, 1
cmp byte [esi + ebx], 0
jne 0x40d3ac
push dword [0x4e01a8]
push 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
test ebx, ebx
je 0x40d241
mov eax, 1
nop
movzx ecx, byte [esi + eax - 1]
movzx ecx, byte [ecx + 0x4c6d40]
cmp cl, 1
jne 0x40cf3a
lea edx, [eax + 1]
cmp ebx, eax
mov eax, edx
jne 0x40cf20
cmp cl, 1
je 0x40d1fd
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], ebx
sub esp, 0xc
movq xmm0, qword [esp + 0x38]
movq qword [esp + 4], xmm0
lea eax, [esp + 0x2c]
mov dword [esp], eax
call fcn.004052e0
add esp, 0xc
test byte [esp + 0x20], 1
je 0x40d21b
mov eax, dword [esp + 0x28]
jmp 0x40d21f
xor ebx, ebx
mov esi, 0x4c764b
mov ecx, esi
mov edx, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
jmp fcn.0040d510
add ecx, eax
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test dl, 1
mov dword [esp + 0x14], eax
je 0x40b362
jmp 0x40b3ab
push dword [0x4e01a8]
push 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
jmp 0x40d241
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor esi, esi
test byte [esp + 0x1c], 1
mov ecx, dword [esp + 4]
je 0x40d03c
mov eax, esi
or eax, 1
add eax, ecx
add eax, 1
mov edi, dword [esp + 0x10]
mov dword [edi], eax
movzx eax, word [ecx + esi]
movd xmm2, eax
mov eax, dword [esp + 0x14]
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edi, xmm1
cmp dword [esp + 0x18], eax
jne 0x40d058
mov dword [esp + 4], edi
jmp 0x40d10b
add ecx, eax
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test dl, 1
mov dword [esp + 0x14], eax
je 0x40b46f
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x14], edx
je 0x40d10b
add ecx, 1
sub edx, eax
add edx, 1
shl eax, 3
nop dword [eax]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
movzx edx, byte [ecx - 1]
xor ebx, ebx
mov ecx, eax
shld ebx, edx, cl
shl edx, cl
test al, 0x20
cmovne ebx, edx
mov ecx, 0
cmovne edx, ecx
or ebx, esi
or edx, edi
mov ecx, dword [esp + 4]
add ecx, 1
mov esi, dword [esp + 0x10]
mov dword [esi], ecx
mov ecx, dword [esp + 4]
movzx edi, byte [ecx]
mov ecx, eax
add cl, 8
xor esi, esi
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
mov ecx, 0
cmovne edi, ecx
mov ecx, dword [esp + 4]
or esi, ebx
or edi, edx
mov edx, dword [esp + 8]
add ecx, 2
add eax, 0x10
add edx, 0xfffffffe
jne 0x40d090
mov eax, edi
mov dword [esp + 4], eax
mov ebx, dword [esp + 0xc]
xor eax, eax
cmp word [esp + 4], 0xffff
je 0x40d1c9
mov ecx, dword [ebx + 0x2c]
movzx edx, di
mov ecx, dword [ecx + edx*4]
cmp ecx, 0xffffffff
jne 0x40d1ad
jmp 0x40d1c9
xorpd xmm0, xmm0
movdqa xmm1, xmmword [0x4c68e0]
xor esi, esi
test byte [esp + 0x1c], 1
mov ecx, dword [esp + 4]
je 0x40d18e
mov eax, esi
or eax, 1
add eax, ecx
add eax, 1
mov edi, dword [esp + 0x10]
mov dword [edi], eax
movzx eax, word [ecx + esi]
movd xmm2, eax
mov eax, dword [esp + 0x14]
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
punpcklwd xmm2, xmm3
punpckldq xmm2, xmm3
movdqa xmm3, xmm2
psllq xmm3, xmm1
pshufd xmm1, xmm1, 0xee
psllq xmm2, xmm1
movsd xmm2, xmm3
orpd xmm0, xmm2
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movd edi, xmm1
cmp dword [esp + 0x18], eax
jne 0x40d1e0
mov eax, dword [ebx + 0x34]
mov ecx, dword [eax + edi*8 + 4]
cmp ecx, 0xffffffff
je 0x40d1c7
mov eax, dword [ebx + 0xc]
mov edx, dword [ebx + 0x28]
mov ecx, dword [edx + ecx*4]
cmp byte [eax + ecx], 0
js 0x40d250
add eax, ecx
add eax, 1
jmp 0x40d1c9
xor eax, eax
push dword [0x4e01a8]
push eax
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputs
add esp, 8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
add ecx, eax
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
test dl, 1
mov dword [esp + 0x14], eax
je 0x40b4f1
jmp 0x40b53a
xor edi, edi
movsx eax, byte [esi + edi]
push dword [0x4e01a8]
push eax
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
add esp, 8
add edi, 1
cmp ebx, edi
jne 0x40d1ff
jmp 0x40d241
lea eax, [esp + 0x21]
push dword [0x4e01a8]
push eax
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputs
add esp, 8
test byte [esp + 0x20], 1
je 0x40d241
push dword [esp + 0x28]
call fcn.0046a990
add esp, 4
push dword [0x4e01a8]
push 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
jmp 0x40d1d5
add eax, ecx
cmp byte [eax + 1], 0
js 0x40d2c7
add eax, 2
jmp 0x40d1c9
movzx ecx, byte [eax + 1]
mov edx, ebx
and edx, 0x7f
mov ebx, ecx
and ebx, 0x7f
shl ebx, 7
or ebx, edx
test cl, cl
js 0x40d312
add eax, 2
jmp 0x40d4a6
movzx edx, byte [ecx + 1]
mov esi, eax
and esi, 0x7f
mov eax, edx
and eax, 0x7f
shl eax, 7
or eax, esi
test dl, dl
js 0x40d330
add ecx, 2
jmp 0x40d41b
movzx ecx, byte [eax + 1]
and edx, 0x7f
mov esi, ecx
and esi, 0x7f
shl esi, 7
or esi, edx
test cl, cl
js 0x40d34e
add eax, 2
jmp 0x40d367
cmp byte [eax + 2], 0
js 0x40d374
add eax, 3
jmp 0x40d1c9
add ecx, eax
cmp byte [ecx + 1], 0
js 0x40d3bf
add ecx, 2
jmp 0x40d477
add esi, eax
movzx eax, byte [esi + 1]
mov ecx, ebx
and ecx, 0x7f
mov ebx, eax
and ebx, 0x7f
shl ebx, 7
or ebx, ecx
test al, al
js 0x40d3d1
add esi, 2
jmp 0x40ceb8
movzx ecx, byte [eax + 2]
mov edx, ecx
and edx, 0x7f
shl edx, 0xe
or ebx, edx
test cl, cl
js 0x40d3ef
add eax, 3
jmp 0x40d4a6
movzx edx, byte [ecx + 2]
mov esi, edx
and esi, 0x7f
shl esi, 0xe
or eax, esi
test dl, dl
js 0x40d40d
add ecx, 3
jmp 0x40d41b
movzx ecx, byte [eax + 2]
mov edx, ecx
and edx, 0x7f
shl edx, 0xe
or esi, edx
test cl, cl
js 0x40d436
add eax, 3
mov ecx, dword [esp + 0x10]
mov edx, esi
mov esi, ecx
jmp 0x40b6ad
mov cl, byte [eax + 3]
shr cl, 7
movzx ecx, cl
add eax, ecx
add eax, 4
jmp 0x40d1c9
add esi, eax
movzx eax, byte [esi + 1]
mov ecx, ebx
and ecx, 0x7f
mov ebx, eax
and ebx, 0x7f
shl ebx, 7
or ebx, ecx
test al, al
js 0x40d44f
add esi, 2
jmp 0x40cef8
lea eax, [esi + ebx]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
add ebx, eax
jmp 0x40cf02
cmp byte [ecx + 2], 0
js 0x40d469
add ecx, 3
jmp 0x40d477
movzx eax, byte [esi + 2]
mov ecx, eax
and ecx, 0x7f
shl ecx, 0xe
or ebx, ecx
test al, al
js 0x40d480
add esi, 3
jmp 0x40ceb8
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0x7f
shl edx, 0x15
or ebx, edx
test cl, cl
js 0x40d49a
add eax, 4
jmp 0x40d4a6
mov dl, byte [ecx + 3]
shr dl, 7
movzx edx, dl
add ecx, edx
add ecx, 4
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov dword [esi], ecx
xor ecx, ecx
cmp ax, 0xffff
jne 0x40b668
jmp 0x40b68e
movzx ecx, byte [eax + 3]
mov edx, ecx
and edx, 0x7f
shl edx, 0x15
or esi, edx
mov edx, esi
test cl, cl
js 0x40d4b9
add eax, 4
jmp 0x40d4c5
movzx eax, byte [esi + 2]
mov ecx, eax
and ecx, 0x7f
shl ecx, 0xe
or ebx, ecx
test al, al
js 0x40d4ce
add esi, 3
jmp 0x40cef8
mov al, byte [ecx + 3]
shr al, 7
movzx eax, al
add ecx, eax
add ecx, 4
mov esi, dword [esp + 0x10]
jmp 0x40b68e
movzx eax, byte [esi + 3]
mov ecx, eax
and ecx, 0x7f
shl ecx, 0x15
or ebx, ecx
test al, al
js 0x40d4e8
add esi, 4
jmp 0x40ceb8
movzx ecx, byte [eax + 4]
add eax, 5
shl ecx, 0x1c
or ebx, ecx
mov esi, dword [esp + 0x10]
mov dword [esi], eax
test ebx, ebx
jne 0x40b5f0
jmp 0x40b63a
movzx ecx, byte [eax + 4]
add eax, 5
shl ecx, 0x1c
or edx, ecx
mov esi, dword [esp + 0x10]
jmp 0x40b6ad
movzx eax, byte [esi + 3]
mov ecx, eax
and ecx, 0x7f
shl ecx, 0x15
or ebx, ecx
test al, al
js 0x40d4f9
add esi, 4
jmp 0x40cef8
movzx eax, byte [esi + 4]
add esi, 5
shl eax, 0x1c
or ebx, eax
jmp 0x40ceb8
movzx eax, byte [esi + 4]
add esi, 5
shl eax, 0x1c
or ebx, eax
jmp 0x40cef8