Function at 0x40ad90
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c0
mov eax, dword [0x5d6b10]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push 0x80
lea eax, [ebp - 0x214]
mov ebx, ecx
push 0
push eax
mov dword [ebp - 0x2c0], ebx
call fcn.00546e30
push 0x80
lea eax, [ebp - 0x294]
push 0
push eax
call fcn.00546e30
add esp, 0x18
lea eax, [ebp - 0x194]
lea ecx, [ebx + 0x98]
push 0x80
push eax
call fcn.00421449
lea ecx, [ebp - 0x194]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40adf6
sub ecx, edx
xor eax, eax
test ecx, ecx
jle 0x40ae27
cmp byte [ebp + eax - 0x194], 0x20
jne 0x40ae22
cmp eax, 0x80
jae 0x40d00c
mov byte [ebp + eax - 0x194], 0
inc eax
cmp eax, ecx
jl 0x40ae05
lea esi, [ebp - 0x194]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40ae30
lea eax, [ebp - 0x294]
sub esi, ecx
push eax
lea eax, [ebp - 0x194]
push esi
push eax
call fcn.00404360
push 5
push esi
lea eax, [ebp - 0x214]
push eax
lea eax, [ebp - 0x294]
push eax
call fcn.004043c0
mov ebx, eax
add esp, 0x1c
mov eax, 0x5cdb68
mov dword [ebp - 0x2a8], ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40ae76
sub eax, edx
mov dword [ebp - 0x2b4], eax
cmp ebx, 0x10
jl 0x40cfe2
push ebx
lea eax, [ebp - 0x214]
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.00547f80
add esp, 0xc
lea edx, [ebp - 0x114]
test ebx, ebx
jle 0x40aed4
mov esi, ebx
movzx ecx, byte [edx]
lea edx, [edx + 1]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 1], al
dec esi
jne 0x40aeb1
push edi
push ebx
call fcn.00549811
add esp, 4
mov dword [ebp - 0x10], eax
xor edi, edi
test eax, eax
je 0x40b2be
mov eax, ebx
lea esi, [ebp - 0x114]
cdq
and edx, 7
lea ebx, [edx + eax]
mov eax, dword [ebp - 0x2a8]
sar ebx, 3
xor edx, edx
div ebx
mov dword [ebp - 0x2ac], ebx
mov dword [ebp - 0x298], eax
test eax, eax
je 0x40b003
jmp 0x40af20
lea eax, [edi + 1]
xor ecx, ecx
cdq
idiv dword [ebp - 0x2b4]
mov eax, edi
movzx ebx, byte [edx + 0x5cdb68]
cdq
idiv dword [ebp - 0x2b4]
movzx eax, byte [edx + 0x5cdb68]
imul ebx, eax
lea eax, [edi + 1]
cmp eax, dword [ebp - 0x2b4]
cmovge eax, ecx
mov dword [ebp - 0x2a0], eax
mov edi, ebx
mov dword [ebp - 0x29c], ebx
shr edi, 3
test edi, edi
je 0x40afa2
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x2a4], eax
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov edx, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
mov eax, dword [ebp - 0x2a4]
add esp, 0xc
mov byte [edx + esi - 1], bl
dec edi
jne 0x40af77
mov ebx, dword [ebp - 0x29c]
jmp 0x40afa8
mov edx, dword [ebp - 0x2ac]
and ebx, 7
jbe 0x40afe9
dec edx
mov dword [ebp - 0x2a4], edx
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test edx, edx
je 0x40afdf
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40afd2
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40afc6
mov edx, dword [ebp - 0x2a4]
test edi, edi
je 0x40afe6
or byte [ecx], 1
dec ebx
jne 0x40afb4
mov ebx, dword [ebp - 0x2ac]
add esi, ebx
dec dword [ebp - 0x298]
mov edi, dword [ebp - 0x2a0]
jne 0x40af20
mov eax, dword [ebp - 0x2a8]
lea esi, [ebp - 0x114]
cdq
idiv ebx
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x298], ecx
mov dword [ebp - 0x29c], eax
test ecx, ecx
jle 0x40b0fc
lea ebx, [ebx]
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2a0], edx
shr edi, 3
test edi, edi
je 0x40b08b
lea eax, [ebx - 1]
mov dword [ebp - 0x2a4], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2a4]
dec edi
jne 0x40b050
mov edx, dword [ebp - 0x2a0]
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
and edx, 7
mov dword [ebp - 0x2a0], edx
jbe 0x40b0eb
dec ebx
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40b0c9
mov edx, ebx
jmp 0x40b0b0
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40b0bc
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40b0b0
mov edx, dword [ebp - 0x2a0]
test edi, edi
je 0x40b0d0
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2a0], edx
jne 0x40b097
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
inc eax
add esi, ebx
mov dword [ebp - 0x29c], eax
cmp eax, ecx
jl 0x40b030
mov eax, dword [ebp - 0x2a8]
lea esi, [ebp - 0x114]
cdq
idiv ebx
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x298], ecx
mov dword [ebp - 0x29c], eax
test ecx, ecx
jle 0x40b1f0
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2a0], edx
shr edi, 3
test edi, edi
je 0x40b17e
lea eax, [ebx - 1]
mov dword [ebp - 0x2a4], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2a4]
dec edi
jne 0x40b143
mov edx, dword [ebp - 0x2a0]
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
and edx, 7
mov dword [ebp - 0x2a0], edx
jbe 0x40b1df
dec ebx
lea ebx, [ebx]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40b1bd
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40b1b0
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40b1a4
mov edx, dword [ebp - 0x2a0]
test edi, edi
je 0x40b1c4
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2a0], edx
jne 0x40b190
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
inc eax
add esi, ebx
mov dword [ebp - 0x29c], eax
cmp eax, ecx
jl 0x40b123
push dword [ebp - 0x2a8]
mov edi, dword [ebp - 0x10]
push 0
push edi
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
call fcn.00546e30
add esp, 0xc
lea esi, [ebp - 0x114]
xor eax, eax
mov dword [ebp - 0x29c], eax
mov ecx, edi
test ebx, ebx
jle 0x40b2a8
mov edi, ebx
mov ebx, dword [ebp - 0x29c]
mov dl, byte [esi]
inc esi
test dl, 1
je 0x40b240
mov al, byte [ebp + ebx - 0xc]
or byte [ecx], al
test dl, 2
je 0x40b24c
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 1], al
test dl, 4
je 0x40b258
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 2], al
test dl, 8
je 0x40b264
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 3], al
test dl, 0x10
je 0x40b270
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 4], al
test dl, 0x20
je 0x40b27c
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 5], al
test dl, 0x40
je 0x40b288
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 6], al
test dl, dl
jns 0x40b293
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 7], al
add ecx, 8
dec edi
jne 0x40b232
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov edi, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x29c], eax
cmp eax, 8
jl 0x40b220
mov ebx, dword [ebp - 0x2a8]
push ebx
lea eax, [ebp - 0x114]
push edi
push eax
call fcn.00547f80
push edi
call fcn.005497d9
lea esi, [ebx - 1]
add esp, 0x10
xor edx, edx
lea ecx, [ebp - 0x114]
test esi, esi
jle 0x40b302
jmp 0x40b2f0
mov al, byte [ebp + edx - 0x113]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, esi
jl 0x40b2f0
lea edx, [ebp - 0x114]
test ebx, ebx
jle 0x40b333
mov esi, ebx
mov edi, edi
movzx ecx, byte [edx]
lea edx, [edx + 1]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 1], al
dec esi
jne 0x40b310
push ebx
call fcn.00549811
add esp, 4
mov dword [ebp - 0x10], eax
test eax, eax
je 0x40cfe1
mov eax, ebx
lea esi, [ebp - 0x114]
cdq
and edx, 7
lea ebx, [edx + eax]
mov eax, dword [ebp - 0x2a8]
sar ebx, 3
cdq
idiv ebx
mov dword [ebp - 0x2ac], ebx
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x298], ecx
mov dword [ebp - 0x29c], eax
test ecx, ecx
jle 0x40b44c
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2a0], edx
shr edi, 3
test edi, edi
je 0x40b3db
lea eax, [ebx - 1]
mov dword [ebp - 0x2a4], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2a4]
dec edi
jne 0x40b3a0
mov edx, dword [ebp - 0x2a0]
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
and edx, 7
mov dword [ebp - 0x2a0], edx
jbe 0x40b43b
dec ebx
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40b419
mov edx, ebx
jmp 0x40b400
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40b40c
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40b400
mov edx, dword [ebp - 0x2a0]
test edi, edi
je 0x40b420
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2a0], edx
jne 0x40b3e7
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
inc eax
add esi, ebx
mov dword [ebp - 0x29c], eax
cmp eax, ecx
jl 0x40b380
mov eax, dword [ebp - 0x2a8]
lea esi, [ebp - 0x114]
xor edx, edx
xor edi, edi
div ebx
mov dword [ebp - 0x298], eax
test eax, eax
je 0x40b59f
lea esp, [esp]
lea eax, [edi + 4]
cdq
lea ecx, [edi + 1]
idiv dword [ebp - 0x2b4]
lea eax, [edi + 3]
movzx ebx, byte [edx + 0x5cdb68]
cdq
idiv dword [ebp - 0x2b4]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
lea eax, [edi + 2]
cdq
idiv dword [ebp - 0x2b4]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
mov eax, edi
cdq
idiv dword [ebp - 0x2b4]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
mov eax, ecx
cdq
idiv dword [ebp - 0x2b4]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
movzx eax, byte [edi + 0x5cdb68]
imul ebx, eax
xor eax, eax
shl ebx, 8
cmp ecx, dword [ebp - 0x2b4]
mov edi, ebx
mov dword [ebp - 0x29c], ebx
cmovge ecx, eax
shr edi, 3
mov dword [ebp - 0x2a0], ecx
test edi, edi
je 0x40b53b
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x2a4], eax
jmp 0x40b510
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov edx, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
mov eax, dword [ebp - 0x2a4]
add esp, 0xc
mov byte [edx + esi - 1], bl
dec edi
jne 0x40b510
mov ebx, dword [ebp - 0x29c]
jmp 0x40b541
mov edx, dword [ebp - 0x2ac]
and ebx, 7
jbe 0x40b585
dec edx
mov dword [ebp - 0x2a4], edx
lea ecx, [ecx]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test edx, edx
je 0x40b57b
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40b56e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40b562
mov edx, dword [ebp - 0x2a4]
test edi, edi
je 0x40b582
or byte [ecx], 1
dec ebx
jne 0x40b550
mov ebx, dword [ebp - 0x2ac]
add esi, ebx
dec dword [ebp - 0x298]
mov edi, dword [ebp - 0x2a0]
jne 0x40b470
mov eax, dword [ebp - 0x2a8]
lea esi, [ebp - 0x114]
cdq
idiv ebx
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x298], ecx
mov dword [ebp - 0x29c], eax
test ecx, ecx
jle 0x40b690
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2a0], edx
shr edi, 3
test edi, edi
je 0x40b621
lea eax, [ebx - 1]
mov dword [ebp - 0x2a4], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2a4]
dec edi
jne 0x40b5e6
mov edx, dword [ebp - 0x2a0]
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
and edx, 7
mov dword [ebp - 0x2a0], edx
jbe 0x40b67f
dec ebx
lea ecx, [ecx]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40b65d
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40b650
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40b644
mov edx, dword [ebp - 0x2a0]
test edi, edi
je 0x40b664
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2a0], edx
jne 0x40b630
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
inc eax
add esi, ebx
mov dword [ebp - 0x29c], eax
cmp eax, ecx
jl 0x40b5c6
mov eax, dword [ebp - 0x2a8]
lea esi, [ebp - 0x114]
cdq
idiv ebx
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x298], ecx
mov dword [ebp - 0x29c], eax
test ecx, ecx
jle 0x40b780
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2a0], edx
shr edi, 3
test edi, edi
je 0x40b712
lea eax, [ebx - 1]
mov dword [ebp - 0x2a4], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2ac]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2a4]
dec edi
jne 0x40b6d7
mov edx, dword [ebp - 0x2a0]
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
and edx, 7
mov dword [ebp - 0x2a0], edx
jbe 0x40b76f
dec ebx
mov edi, edi
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40b74d
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40b740
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40b734
mov edx, dword [ebp - 0x2a0]
test edi, edi
je 0x40b754
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2a0], edx
jne 0x40b720
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [ebp - 0x298]
inc eax
add esi, ebx
mov dword [ebp - 0x29c], eax
cmp eax, ecx
jl 0x40b6b7
push dword [ebp - 0x2a8]
mov edi, dword [ebp - 0x10]
push 0
push edi
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
call fcn.00546e30
add esp, 0xc
lea esi, [ebp - 0x114]
xor eax, eax
mov dword [ebp - 0x29c], eax
mov ecx, edi
test ebx, ebx
jle 0x40b838
mov edi, ebx
mov ebx, dword [ebp - 0x29c]
mov dl, byte [esi]
inc esi
test dl, 1
je 0x40b7d0
mov al, byte [ebp + ebx - 0xc]
or byte [ecx], al
test dl, 2
je 0x40b7dc
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 1], al
test dl, 4
je 0x40b7e8
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 2], al
test dl, 8
je 0x40b7f4
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 3], al
test dl, 0x10
je 0x40b800
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 4], al
test dl, 0x20
je 0x40b80c
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 5], al
test dl, 0x40
je 0x40b818
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 6], al
test dl, dl
jns 0x40b823
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 7], al
add ecx, 8
dec edi
jne 0x40b7c2
mov ebx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x29c]
mov edi, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x29c], eax
cmp eax, 8
jl 0x40b7b0
mov ebx, dword [ebp - 0x2a8]
mov edx, edi
test ebx, ebx
jle 0x40b876
mov esi, ebx
movzx ecx, byte [edx]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx], al
inc edx
dec esi
jne 0x40b856
push ebx
lea eax, [ebp - 0x114]
push edi
push eax
call fcn.00547f80
push edi
call fcn.005497d9
push 4
lea eax, [ebp - 0x2a0]
mov dword [ebp - 0x2a0], 0x78e06cfe
push eax
lea eax, [ebp - 0x298]
mov dword [ebp - 0x298], 0x2900
push 0x5cdc78
push eax
call fcn.0040d020
mov edi, dword [ebp - 0x2b4]
lea esi, [ebp - 0x114]
mov dword [0x5dedf0], eax
add esi, ebx
xor al, al
mov dword [ebp - 0x2a4], esi
add esp, 0x20
mov dword [ebp - 0x29c], eax
xor ecx, ecx
test edi, edi
jle 0x40b96e
cmp edi, 0x20
jb 0x40b96e
mov eax, edi
and eax, 0x8000001f
jns 0x40b8fd
dec eax
or eax, 0xffffffe0
inc eax
mov edx, edi
xorps xmm1, xmm1
sub edx, eax
movdqa xmm2, xmm1
mov eax, 0x5cdb78
lea ecx, [ecx]
movdqu xmm0, xmmword [eax - 0x10]
add ecx, 0x20
lea eax, [eax + 0x20]
paddb xmm1, xmm0
movdqu xmm0, xmmword [eax - 0x20]
paddb xmm2, xmm0
cmp ecx, edx
jl 0x40b910
paddb xmm1, xmm2
movdqa xmm0, xmm1
psrldq xmm0, 8
paddb xmm1, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 4
paddb xmm1, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 2
paddb xmm1, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 1
paddb xmm1, xmm0
movd eax, xmm1
mov dword [ebp - 0x29c], eax
xor dl, dl
xor bl, bl
cmp ecx, edi
jge 0x40b9b7
mov eax, edi
sub eax, ecx
cmp eax, 2
jl 0x40b9a3
lea eax, [edi - 1]
jmp 0x40b990
add dl, byte [ecx + 0x5cdb68]
add bl, byte [ecx + 0x5cdb69]
add ecx, 2
cmp ecx, eax
jl 0x40b990
mov eax, dword [ebp - 0x29c]
cmp ecx, edi
jge 0x40b9b3
add al, byte [ecx + 0x5cdb68]
add dl, bl
add al, dl
mov edi, dword [ebp - 0x298]
xor ecx, ecx
sar edi, 8
test edi, edi
jle 0x40b9f3
mov edx, dword [0x5dedf0]
movzx eax, al
imul eax, edi
add edx, eax
jmp 0x40b9e0
movzx eax, byte [edx + ecx]
mov al, byte [ebp + eax - 0x114]
mov byte [ecx + esi], al
inc ecx
cmp ecx, edi
jl 0x40b9e0
push dword [0x5dedf0]
xor bh, bh
xor bl, bl
call fcn.005497d9
lea eax, [edi - 2]
add esp, 4
mov dword [ebp - 0x2ac], eax
lea edx, [esi + 2]
xor ch, ch
xor ah, ah
xor edi, edi
cmp dword [ebp - 0x2ac], 2
jl 0x40ba59
mov edi, dword [ebp - 0x2ac]
lea edi, [edi - 2]
shr edi, 1
inc edi
lea esi, [edi + edi]
mov dword [ebp - 0x298], esi
mov esi, dword [ebp - 0x2a4]
jmp 0x40ba40
mov al, byte [edx + 1]
mov cl, byte [edx]
add bl, al
xor al, cl
add bh, cl
xor ah, al
add edx, 2
dec edi
jne 0x40ba40
mov edi, dword [ebp - 0x298]
cmp edi, dword [ebp - 0x2ac]
jge 0x40ba65
mov ch, byte [edx]
xor ah, ch
cmp byte [esi], ah
jne 0x40cfe1
add bl, bh
add bl, ch
cmp byte [esi + 1], bl
jne 0x40cfe1
mov edi, dword [ebp - 0x2ac]
add esi, 2
sub edi, 6
mov dword [ebp - 0x2ac], edi
cmp edi, 0x10
jl 0x40cfe1
push edi
lea ebx, [edi + 6]
add ebx, esi
push esi
push ebx
mov dword [ebp - 0x2a0], ebx
call fcn.00547f80
mov al, byte [esi + edi]
xor al, byte [0x5cdc70]
mov byte [ebp - 0xc], al
mov al, byte [esi + edi + 1]
xor al, byte [0x5cdc71]
mov byte [ebp - 0xb], al
mov al, byte [esi + edi + 2]
xor al, byte [0x5cdc72]
mov byte [ebp - 0xa], al
mov al, byte [esi + edi + 3]
xor al, byte [0x5cdc73]
mov byte [ebp - 9], al
mov al, byte [esi + edi + 4]
xor al, byte [0x5cdc74]
mov byte [ebp - 8], al
mov al, byte [esi + edi + 5]
xor al, byte [0x5cdc75]
push edi
mov byte [ebp - 7], al
call fcn.00549811
add esp, 0x10
mov dword [ebp - 0x298], eax
mov dword [ebp - 0x29c], 6
test eax, eax
jne 0x40bb19
xor esi, esi
jmp 0x40bf17
mov eax, edi
mov esi, ebx
cdq
xor edi, edi
sub eax, edx
sar eax, 1
cdq
and edx, 7
lea ecx, [edx + eax]
mov eax, dword [ebp - 0x2ac]
sar ecx, 3
xor edx, edx
div ecx
mov dword [ebp - 0x2a8], ecx
mov dword [ebp - 0x10], eax
test eax, eax
je 0x40bc40
lea esp, [esp]
mov eax, 0x2aaaaaab
lea ecx, [edi + 1]
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
add eax, eax
sub edi, eax
mov eax, ecx
cdq
movzx ebx, byte [ebp + edi - 0xc]
mov edi, 6
idiv edi
movzx eax, byte [ebp + edx - 0xc]
imul ebx, eax
xor eax, eax
cmp ecx, edi
cmovge ecx, eax
mov dword [ebp - 0x2b0], ecx
mov edi, ebx
mov dword [ebp - 0x2b8], ebx
shr edi, 3
test edi, edi
je 0x40bbdb
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x2a4], eax
jmp 0x40bbb0
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov edx, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
mov eax, dword [ebp - 0x2a4]
add esp, 0xc
mov byte [edx + esi - 1], bl
dec edi
jne 0x40bbb0
mov ebx, dword [ebp - 0x2b8]
jmp 0x40bbe1
mov edx, dword [ebp - 0x2a8]
and ebx, 7
jbe 0x40bc25
dec edx
mov dword [ebp - 0x2a4], edx
lea ecx, [ecx]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test edx, edx
je 0x40bc1b
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40bc0e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40bc02
mov edx, dword [ebp - 0x2a4]
test edi, edi
je 0x40bc22
or byte [ecx], 1
dec ebx
jne 0x40bbf0
add esi, dword [ebp - 0x2a8]
dec dword [ebp - 0x10]
mov edi, dword [ebp - 0x2b0]
jne 0x40bb50
mov ebx, dword [ebp - 0x2a0]
mov eax, dword [ebp - 0x2ac]
mov esi, ebx
mov edi, dword [ebp - 0x2a8]
cdq
idiv edi
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x2a4], ecx
mov dword [ebp - 0x10], eax
test ecx, ecx
jle 0x40bd3c
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2b8], edx
shr edi, 3
test edi, edi
je 0x40bcc2
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x2b0], eax
lea ebx, [ebx]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2b0]
dec edi
jne 0x40bc90
mov edx, dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x2a4]
and edx, 7
mov dword [ebp - 0x2b8], edx
jbe 0x40bd22
mov eax, dword [ebp - 0x2a8]
lea ebx, [eax - 1]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40bd09
mov edx, ebx
lea ebx, [ebx]
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40bcfc
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40bcf0
mov edx, dword [ebp - 0x2b8]
test edi, edi
je 0x40bd10
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2b8], edx
jne 0x40bcd6
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x2a4]
mov edi, dword [ebp - 0x2a8]
inc eax
add esi, edi
mov dword [ebp - 0x10], eax
cmp eax, ecx
jl 0x40bc66
mov ebx, dword [ebp - 0x2a0]
mov eax, dword [ebp - 0x2ac]
mov esi, ebx
cdq
idiv edi
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x2a4], ecx
mov dword [ebp - 0x10], eax
test ecx, ecx
jle 0x40be30
lea esp, [esp]
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x2b8], edx
shr edi, 3
test edi, edi
je 0x40bdb6
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x2b0], eax
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2b0]
dec edi
jne 0x40bd84
mov edx, dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x2a4]
and edx, 7
mov dword [ebp - 0x2b8], edx
jbe 0x40be16
mov eax, dword [ebp - 0x2a8]
lea ebx, [eax - 1]
lea ebx, [ebx]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40bdfd
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40bdf0
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40bde4
mov edx, dword [ebp - 0x2b8]
test edi, edi
je 0x40be04
or byte [ecx], 1
dec edx
mov dword [ebp - 0x2b8], edx
jne 0x40bdd0
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x2a4]
mov edi, dword [ebp - 0x2a8]
inc eax
add esi, edi
mov dword [ebp - 0x10], eax
cmp eax, ecx
jl 0x40bd60
mov ebx, dword [ebp - 0x2a0]
push dword [ebp - 0x2ac]
mov dword [ebp - 0x14], 0x8040201
push 0
push dword [ebp - 0x298]
mov dword [ebp - 0x10], 0x80402010
call fcn.00546e30
add esp, 0xc
mov esi, ebx
xor eax, eax
mov dword [ebp - 0x2a4], eax
mov edi, edi
add eax, dword [ebp - 0x298]
xor ebx, ebx
mov dword [ebp - 0x2b0], eax
mov edi, edi
mov ecx, eax
test edi, edi
jle 0x40bee9
mov dl, byte [esi]
inc esi
test dl, 1
je 0x40be84
mov al, byte [ebp + ebx - 0x14]
or byte [ecx], al
test dl, 2
je 0x40be90
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 2], al
test dl, 4
je 0x40be9c
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 4], al
test dl, 8
je 0x40bea8
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 6], al
test dl, 0x10
je 0x40beb4
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 8], al
test dl, 0x20
je 0x40bec0
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 0xa], al
test dl, 0x40
je 0x40becc
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 0xc], al
test dl, dl
jns 0x40bed7
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 0xe], al
add ecx, 0x10
dec edi
jne 0x40be76
mov edi, dword [ebp - 0x2a8]
mov eax, dword [ebp - 0x2b0]
inc ebx
cmp ebx, 8
jl 0x40be70
mov eax, dword [ebp - 0x2a4]
inc eax
mov dword [ebp - 0x2a4], eax
cmp eax, 2
jl 0x40be60
mov ebx, dword [ebp - 0x2a0]
mov esi, dword [ebp - 0x298]
mov edi, dword [ebp - 0x2ac]
push edi
push esi
push ebx
call fcn.00547f80
push esi
call fcn.005497d9
lea esi, [edi - 1]
add esp, 0x10
xor edx, edx
mov ecx, ebx
test esi, esi
jle 0x40bf42
mov al, byte [edx + ebx + 1]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, esi
jl 0x40bf33
mov edx, ebx
test edi, edi
jle 0x40bf73
mov esi, edi
lea ebx, [ebx]
movzx ecx, byte [edx]
lea edx, [edx + 1]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 1], al
dec esi
jne 0x40bf50
push edi
call fcn.00549811
add esp, 4
mov dword [ebp - 0x2b8], eax
test eax, eax
je 0x40cfe1
mov eax, edi
mov esi, ebx
cdq
sub eax, edx
sar eax, 1
cdq
and edx, 7
lea ecx, [edx + eax]
mov eax, edi
sar ecx, 3
cdq
idiv ecx
mov dword [ebp - 0x2a8], ecx
mov edx, eax
xor eax, eax
mov dword [ebp - 0x2a4], edx
mov dword [ebp - 0x298], eax
test edx, edx
jle 0x40c07e
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x10], edx
shr edi, 3
test edi, edi
je 0x40c012
lea eax, [ecx - 1]
mov dword [ebp - 0x2b0], eax
lea ecx, [esi + 1]
lea ecx, [ecx]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2b0]
dec edi
jne 0x40bfe0
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2a8]
and edx, 7
mov dword [ebp - 0x10], edx
jbe 0x40c063
lea ebx, [ecx - 1]
lea ecx, [ecx]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40c04a
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40c040
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40c034
mov edx, dword [ebp - 0x10]
test edi, edi
je 0x40c051
or byte [ecx], 1
dec edx
mov dword [ebp - 0x10], edx
jne 0x40c020
mov eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2a8]
inc eax
add esi, ecx
mov dword [ebp - 0x298], eax
cmp eax, dword [ebp - 0x2a4]
jl 0x40bfc0
mov ebx, dword [ebp - 0x2a0]
mov eax, dword [ebp - 0x2ac]
xor edx, edx
div ecx
mov edi, ebx
mov dword [ebp - 0x298], 0
mov dword [ebp - 0x2a4], eax
test eax, eax
je 0x40c1cf
mov ebx, dword [ebp - 0x298]
mov eax, 0x2aaaaaab
imul ebx
lea esi, [ebx + 1]
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
sub ebx, ecx
mov ecx, dword [ebp - 0x298]
lea eax, [ecx + 4]
movzx ebx, byte [ebp + ebx - 0xc]
cdq
idiv dword [ebp - 0x29c]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
lea eax, [ecx + 3]
cdq
idiv dword [ebp - 0x29c]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
lea eax, [ecx + 2]
cdq
idiv dword [ebp - 0x29c]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
mov eax, esi
cdq
idiv dword [ebp - 0x29c]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
movzx eax, byte [ebp + ecx - 0xc]
imul ebx, eax
xor ecx, ecx
mov eax, esi
shl ebx, 8
cmp eax, 6
mov esi, ebx
mov dword [ebp - 0x10], ebx
cmovge eax, ecx
shr esi, 3
mov dword [ebp - 0x298], eax
test esi, esi
je 0x40c16d
mov eax, dword [ebp - 0x2a8]
lea ecx, [edi + 1]
dec eax
mov dword [ebp - 0x2b0], eax
mov bl, byte [edi]
push eax
push ecx
push edi
call fcn.005485d0
mov edx, dword [ebp - 0x2a8]
lea ecx, [edi + 1]
mov eax, dword [ebp - 0x2b0]
add esp, 0xc
mov byte [edx + edi - 1], bl
dec esi
jne 0x40c145
mov ebx, dword [ebp - 0x10]
jmp 0x40c173
mov edx, dword [ebp - 0x2a8]
and ebx, 7
jbe 0x40c1b5
dec edx
mov dword [ebp - 0x2b0], edx
nop
mov al, byte [edi]
mov ecx, edi
movzx esi, al
add al, al
shr esi, 7
mov byte [edi], al
test edx, edx
je 0x40c1ab
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40c19e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40c192
mov edx, dword [ebp - 0x2b0]
test esi, esi
je 0x40c1b2
or byte [ecx], 1
dec ebx
jne 0x40c180
mov ecx, dword [ebp - 0x2a8]
add edi, ecx
dec dword [ebp - 0x2a4]
jne 0x40c0a2
mov ebx, dword [ebp - 0x2a0]
mov eax, dword [ebp - 0x2ac]
mov esi, ebx
cdq
idiv ecx
mov edx, eax
xor eax, eax
mov dword [ebp - 0x2a4], edx
mov dword [ebp - 0x298], eax
test edx, edx
jle 0x40c2c0
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x29c], edx
shr edi, 3
test edi, edi
je 0x40c247
lea eax, [ecx - 1]
mov dword [ebp - 0x2b0], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2b0]
dec edi
jne 0x40c212
mov edx, dword [ebp - 0x29c]
mov eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2a8]
and edx, 7
mov dword [ebp - 0x29c], edx
jbe 0x40c2a5
lea ebx, [ecx - 1]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40c289
mov edx, ebx
lea esp, [esp]
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40c27c
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40c270
mov edx, dword [ebp - 0x29c]
test edi, edi
je 0x40c290
or byte [ecx], 1
dec edx
mov dword [ebp - 0x29c], edx
jne 0x40c255
mov eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2a8]
inc eax
add esi, ecx
mov dword [ebp - 0x298], eax
cmp eax, dword [ebp - 0x2a4]
jl 0x40c1f2
mov ebx, dword [ebp - 0x2a0]
mov eax, dword [ebp - 0x2ac]
mov esi, ebx
cdq
idiv ecx
mov edx, eax
xor eax, eax
mov dword [ebp - 0x2a4], edx
mov dword [ebp - 0x298], eax
test edx, edx
jle 0x40c3b0
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x29c], edx
shr edi, 3
test edi, edi
je 0x40c338
lea eax, [ecx - 1]
mov dword [ebp - 0x2b0], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x2a8]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x2b0]
dec edi
jne 0x40c303
mov edx, dword [ebp - 0x29c]
mov eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2a8]
and edx, 7
mov dword [ebp - 0x29c], edx
jbe 0x40c395
lea ebx, [ecx - 1]
mov al, byte [esi]
mov ecx, esi
movzx edi, al
add al, al
shr edi, 7
mov byte [esi], al
test ebx, ebx
je 0x40c379
mov edx, ebx
lea ebx, [ebx]
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x40c36c
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x40c360
mov edx, dword [ebp - 0x29c]
test edi, edi
je 0x40c380
or byte [ecx], 1
dec edx
mov dword [ebp - 0x29c], edx
jne 0x40c346
mov eax, dword [ebp - 0x298]
mov ecx, dword [ebp - 0x2a8]
inc eax
add esi, ecx
mov dword [ebp - 0x298], eax
cmp eax, dword [ebp - 0x2a4]
jl 0x40c2e3
mov ebx, dword [ebp - 0x2a0]
push dword [ebp - 0x2ac]
mov esi, dword [ebp - 0x2b8]
push 0
push esi
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
call fcn.00546e30
add esp, 0xc
xor eax, eax
mov dword [ebp - 0x2a4], eax
lea ecx, [ecx]
mov ecx, dword [ebp - 0x2a8]
add eax, esi
mov dword [ebp - 0x2b0], eax
xor edi, edi
test ecx, ecx
jle 0x40c463
mov esi, ecx
mov dl, byte [ebx]
inc ebx
test dl, 1
je 0x40c404
mov cl, byte [ebp + edi - 0xc]
or byte [eax], cl
test dl, 2
je 0x40c410
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 2], cl
test dl, 4
je 0x40c41c
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 4], cl
test dl, 8
je 0x40c428
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 6], cl
test dl, 0x10
je 0x40c434
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 8], cl
test dl, 0x20
je 0x40c440
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 0xa], cl
test dl, 0x40
je 0x40c44c
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 0xc], cl
test dl, dl
jns 0x40c457
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 0xe], cl
add eax, 0x10
dec esi
jne 0x40c3f6
mov ecx, dword [ebp - 0x2a8]
mov eax, dword [ebp - 0x2b0]
inc edi
cmp edi, 8
jl 0x40c3f0
mov eax, dword [ebp - 0x2a4]
mov esi, dword [ebp - 0x2b8]
inc eax
mov dword [ebp - 0x2a4], eax
cmp eax, 2
jl 0x40c3e0
mov ebx, dword [ebp - 0x2ac]
mov edi, esi
mov edx, edi
test ebx, ebx
jle 0x40c4c3
mov esi, ebx
jmp 0x40c4a0
movzx ecx, byte [edx]
lea edx, [edx + 1]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 1], al
dec esi
jne 0x40c4a0
movzx eax, word [edi + 5]
cmp eax, dword [0x5cdc68]
jne 0x40cb23
mov edx, dword [edi + 0x17]
mov al, 1
mov ecx, edx
shr edx, 3
and ecx, 7
shl al, cl
and al, byte [edx + 0x5de5f0]
jne 0x40cb23
mov al, byte [0x5cdb68]
imul byte [edi + 0x17]
sub byte [edi + 0x11], al
mov al, byte [0x5cdb69]
imul byte [edi + 0x17]
sub byte [edi + 0x12], al
mov al, byte [0x5cdb6a]
imul byte [edi + 0x17]
sub byte [edi + 0x13], al
mov al, byte [0x5cdb6b]
imul byte [edi + 0x17]
sub byte [edi + 0x14], al
mov al, byte [0x5cdb6c]
imul byte [edi + 0x17]
sub byte [edi + 0x15], al
mov al, byte [0x5cdb6d]
imul byte [edi + 0x17]
sub byte [edi + 0x16], al
mov al, byte [edi + 0x11]
mov byte [0x5dee58], al
mov al, byte [edi + 0x12]
mov byte [0x5dee59], al
mov al, byte [edi + 0x13]
mov byte [0x5dee5a], al
mov al, byte [edi + 0x14]
mov byte [0x5dee5b], al
mov al, byte [edi + 0x15]
mov byte [0x5dee5c], al
mov al, byte [edi + 0x16]
mov byte [0x5dee5d], al
movzx eax, byte [edi]
cmp eax, ebx
jge 0x40cb1d
lea esi, [eax - 6]
mov eax, dword [0x5dedfc]
test al, 1
jne 0x40c5a5
or eax, 1
mov dword [0x5dedf4], 0x100
push 0x5743b0
mov dword [0x5dedfc], eax
mov dword [0x5dedf8], 0x578298
call fcn.00549713
mov eax, dword [0x5dedfc]
add esp, 4
test al, 2
jne 0x40c5c5
or eax, 2
mov dword [0x5dedfc], eax
mov eax, 0x5dedf4
sub eax, 0x5d5c2c
sub eax, 0x96f2
mov dword [0x5dee00], eax
push esi
push 0x5cdb68
push 0x5cdb68
mov dword [0x5d5c1c], 0x5dedf4
call fcn.00549730
push 0x200
call fcn.00549811
mov ebx, eax
add esp, 0x10
mov dword [ebp - 0x2b4], ebx
test ebx, ebx
je 0x40ca8d
push 0x100
lea eax, [ebp - 0x114]
push eax
push ebx
call fcn.00547f80
lea eax, [ebx + 1]
add esp, 0xc
mov ecx, ebx
mov dword [ebp - 0x2a0], eax
xor edx, edx
mov ebx, eax
mov al, byte [ebx + edx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, 0xff
jl 0x40c620
mov ebx, dword [ebp - 0x2b4]
mov esi, 0x40
lea edx, [ebx + 2]
movzx ecx, byte [edx - 2]
lea edx, [edx + 4]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 3], al
dec esi
jne 0x40c640
push 0x100
call fcn.00549811
add esp, 4
mov dword [ebp - 0x29c], eax
test eax, eax
je 0x40ca84
xor edx, edx
or eax, 0xffffffff
sub eax, ebx
mov dword [ebp - 0x298], edx
mov edi, ebx
mov dword [ebp - 0x2a4], eax
mov edi, edi
lea esi, [edx + 1]
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x2b8]
add ecx, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x298]
movzx ebx, byte [eax + ecx]
mov eax, esi
cdq
mov ecx, 0xa
idiv ecx
mov ecx, dword [ebp - 0x2b8]
movzx eax, byte [edx + ecx]
mov edx, esi
imul ebx, eax
xor eax, eax
cmp edx, 0xa
cmovge edx, eax
mov dword [ebp - 0x298], edx
mov esi, ebx
mov dword [ebp - 0x2b0], ebx
shr esi, 3
test esi, esi
je 0x40c776
lea eax, [edi + 1]
mov bl, byte [edi]
push 0
push eax
push edi
call fcn.005485d0
add esp, 0xc
mov byte [edi], bl
lea eax, [edi + 1]
dec esi
jne 0x40c754
mov ebx, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x298]
and ebx, 7
jbe 0x40c794
mov cl, byte [edi]
lea ecx, [ecx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x40c78f
or cl, 1
dec ebx
jne 0x40c780
mov byte [edi], cl
mov eax, dword [ebp - 0x2a4]
inc edi
inc eax
add eax, edi
cmp eax, 0x100
jb 0x40c6f0
xor edx, edx
mov dword [ebp - 0x298], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x2b0], esi
shr edi, 3
test edi, edi
je 0x40c803
mov ecx, dword [ebp - 0x2a0]
mov esi, dword [ebp - 0x298]
add ecx, esi
mov eax, dword [ebp - 0x2b4]
add eax, esi
push 0
push ecx
push eax
mov bl, byte [eax]
call fcn.005485d0
mov ecx, dword [ebp - 0x2a0]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
dec edi
jne 0x40c7d3
mov esi, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x298]
mov ebx, dword [ebp - 0x2b4]
and esi, 7
jbe 0x40c826
mov cl, byte [edx + ebx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x40c820
or cl, 1
dec esi
jne 0x40c811
mov byte [edx + ebx], cl
inc edx
mov dword [ebp - 0x298], edx
cmp edx, 0x100
jl 0x40c7b1
xor edx, edx
mov dword [ebp - 0x298], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x2b0], esi
shr edi, 3
test edi, edi
je 0x40c894
mov ecx, dword [ebp - 0x2a0]
mov esi, dword [ebp - 0x298]
add ecx, esi
lea eax, [esi + ebx]
mov bl, byte [eax]
push 0
push ecx
push eax
call fcn.005485d0
mov ecx, dword [ebp - 0x2a0]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
mov ebx, dword [ebp - 0x2b4]
dec edi
jne 0x40c863
mov esi, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x298]
mov ebx, dword [ebp - 0x2b4]
and esi, 7
jbe 0x40c8b7
mov cl, byte [edx + ebx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x40c8b1
or cl, 1
dec esi
jne 0x40c8a2
mov byte [edx + ebx], cl
inc edx
mov dword [ebp - 0x298], edx
cmp edx, 0x100
jl 0x40c841
push 0x100
push 0
push dword [ebp - 0x29c]
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
call fcn.00546e30
add esp, 0xc
mov esi, ebx
xor edi, edi
mov ecx, dword [ebp - 0x29c]
xor edx, edx
lea eax, [ecx + 0x20]
add eax, edi
mov dword [ebp - 0x2b0], eax
mov bl, byte [esi]
inc esi
test bl, 1
je 0x40c919
mov al, byte [ebp + edx - 0xc]
or byte [edi + ecx], al
mov eax, dword [ebp - 0x2b0]
lea ecx, [eax]
test bl, 2
je 0x40c926
mov al, byte [ebp + edx - 0xc]
or byte [ecx], al
test bl, 4
je 0x40c932
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x20], al
test bl, 8
je 0x40c93e
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x40], al
test bl, 0x10
je 0x40c94a
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x60], al
test bl, 0x20
je 0x40c959
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x80], al
test bl, 0x40
je 0x40c968
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xa0], al
test bl, bl
jns 0x40c976
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xc0], al
mov ecx, dword [ebp - 0x29c]
inc edx
lea eax, [ecx + 0x20]
lea eax, [eax + edi]
cmp edx, 8
jl 0x40c904
inc edi
cmp edi, 0x20
jl 0x40c8f1
mov esi, ecx
mov edi, 0x40
lea edx, [esi + 2]
movzx ecx, byte [edx - 2]
lea edx, [edx + 4]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 3], al
dec edi
jne 0x40c9a0
movzx edi, byte [esi]
cmp edi, 0x100
jge 0x40ca68
lea ebx, [esi + 2]
xor cl, cl
mov eax, ebx
mov edx, edi
test edi, edi
je 0x40ca3e
add cl, byte [eax]
lea eax, [eax + 1]
dec edx
jne 0x40ca36
cmp byte [esi + 1], cl
jne 0x40ca68
push edi
push ebx
mov ebx, dword [ebp - 0x2b4]
push ebx
call fcn.00547f80
push esi
call fcn.005497d9
push ebx
call fcn.005497d9
mov edi, dword [ebp - 0x2b8]
add esp, 0x14
jmp 0x40ca8d
push esi
call fcn.005497d9
push dword [ebp - 0x2b4]
call fcn.005497d9
mov edi, dword [ebp - 0x2b8]
add esp, 8
jmp 0x40ca8d
push ebx
call fcn.005497d9
add esp, 4
mov eax, dword [0x5dee08]
test al, 1
jne 0x40cab7
mov ecx, 0x406210
or eax, 1
sub ecx, 0x4177e0
mov dword [0x5dee08], eax
sub ecx, 0x96f2
mov dword [0x5dee04], ecx
jmp 0x40cabd
mov ecx, dword [0x5dee04]
movzx eax, word [0x5dee58]
add eax, ecx
add eax, 0x4177e0
push edi
mov dword [0x5d5c14], eax
call fcn.005497d9
lea eax, [ebp - 0x214]
push 0x5cdb68
push eax
call fcn.0040d9c0
add esp, 0xc
mov ecx, 0x5d05b0
push 0
push 0
call fcn.00416220
mov esi, dword [ebp - 0x2c0]
mov ecx, esi
push eax
call fcn.0041d193
push 0
push 0
push 0x10
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_PostMessageA]
push 2
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push edi
jmp 0x40cfd9
push dword [ebp - 0x2b4]
push 0x5cdb68
push 0x5cdb68
call fcn.00549730
push 0x200
call fcn.00549811
mov ebx, eax
add esp, 0x10
mov dword [ebp - 0x2b4], ebx
test ebx, ebx
je 0x40cfe1
push 0x100
lea eax, [ebp - 0x114]
push eax
push ebx
call fcn.00547f80
lea eax, [ebx + 1]
add esp, 0xc
mov ecx, ebx
mov dword [ebp - 0x2a0], eax
xor edx, edx
mov ebx, eax
lea esp, [esp]
mov al, byte [ebx + edx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, 0xff
jl 0x40cb80
mov ebx, dword [ebp - 0x2b4]
mov esi, 0x40
lea edx, [ebx + 2]
movzx ecx, byte [edx - 2]
lea edx, [edx + 4]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 3], al
dec esi
jne 0x40cba0
push 0x100
call fcn.00549811
add esp, 4
mov dword [ebp - 0x29c], eax
test eax, eax
je 0x40cfd8
xor edx, edx
or eax, 0xffffffff
sub eax, ebx
mov dword [ebp - 0x298], edx
mov edi, ebx
mov dword [ebp - 0x2a4], eax
mov edi, edi
lea esi, [edx + 1]
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x2b8]
add ecx, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x298]
movzx ebx, byte [eax + ecx]
mov eax, esi
cdq
mov ecx, 0xa
idiv ecx
mov ecx, dword [ebp - 0x2b8]
movzx eax, byte [edx + ecx]
mov edx, esi
imul ebx, eax
xor eax, eax
cmp edx, 0xa
cmovge edx, eax
mov dword [ebp - 0x298], edx
mov esi, ebx
mov dword [ebp - 0x2b0], ebx
shr esi, 3
test esi, esi
je 0x40ccd6
lea eax, [edi + 1]
mov bl, byte [edi]
push 0
push eax
push edi
call fcn.005485d0
add esp, 0xc
mov byte [edi], bl
lea eax, [edi + 1]
dec esi
jne 0x40ccb4
mov ebx, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x298]
and ebx, 7
jbe 0x40ccf4
mov cl, byte [edi]
lea ecx, [ecx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x40ccef
or cl, 1
dec ebx
jne 0x40cce0
mov byte [edi], cl
mov eax, dword [ebp - 0x2a4]
inc edi
inc eax
add eax, edi
cmp eax, 0x100
jb 0x40cc50
xor edx, edx
mov dword [ebp - 0x298], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x2b0], esi
shr edi, 3
test edi, edi
je 0x40cd63
mov ecx, dword [ebp - 0x2a0]
mov esi, dword [ebp - 0x298]
add ecx, esi
mov eax, dword [ebp - 0x2b4]
add eax, esi
push 0
push ecx
push eax
mov bl, byte [eax]
call fcn.005485d0
mov ecx, dword [ebp - 0x2a0]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
dec edi
jne 0x40cd33
mov esi, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x298]
mov ebx, dword [ebp - 0x2b4]
and esi, 7
jbe 0x40cd86
mov cl, byte [edx + ebx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x40cd80
or cl, 1
dec esi
jne 0x40cd71
mov byte [edx + ebx], cl
inc edx
mov dword [ebp - 0x298], edx
cmp edx, 0x100
jl 0x40cd11
xor edx, edx
mov dword [ebp - 0x298], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x2b0], esi
shr edi, 3
test edi, edi
je 0x40cdf4
mov ecx, dword [ebp - 0x2a0]
mov esi, dword [ebp - 0x298]
add ecx, esi
lea eax, [esi + ebx]
mov bl, byte [eax]
push 0
push ecx
push eax
call fcn.005485d0
mov ecx, dword [ebp - 0x2a0]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
mov ebx, dword [ebp - 0x2b4]
dec edi
jne 0x40cdc3
mov esi, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x298]
mov ebx, dword [ebp - 0x2b4]
and esi, 7
jbe 0x40ce17
mov cl, byte [edx + ebx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x40ce11
or cl, 1
dec esi
jne 0x40ce02
mov byte [edx + ebx], cl
inc edx
mov dword [ebp - 0x298], edx
cmp edx, 0x100
jl 0x40cda1
push 0x100
push 0
push dword [ebp - 0x29c]
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
call fcn.00546e30
add esp, 0xc
mov esi, ebx
xor edi, edi
mov ecx, dword [ebp - 0x29c]
xor edx, edx
lea eax, [ecx + 0x20]
add eax, edi
mov dword [ebp - 0x2b0], eax
mov bl, byte [esi]
inc esi
test bl, 1
je 0x40ce79
mov al, byte [ebp + edx - 0xc]
or byte [edi + ecx], al
mov eax, dword [ebp - 0x2b0]
lea ecx, [eax]
test bl, 2
je 0x40ce86
mov al, byte [ebp + edx - 0xc]
or byte [ecx], al
test bl, 4
je 0x40ce92
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x20], al
test bl, 8
je 0x40ce9e
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x40], al
test bl, 0x10
je 0x40ceaa
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x60], al
test bl, 0x20
je 0x40ceb9
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x80], al
test bl, 0x40
je 0x40cec8
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xa0], al
test bl, bl
jns 0x40ced6
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xc0], al
mov ecx, dword [ebp - 0x29c]
inc edx
lea eax, [ecx + 0x20]
lea eax, [eax + edi]
cmp edx, 8
jl 0x40ce64
inc edi
cmp edi, 0x20
jl 0x40ce51
mov esi, ecx
mov edi, 0x40
lea edx, [esi + 2]
movzx ecx, byte [edx - 2]
lea edx, [edx + 4]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d05b8]
shl al, 4
or al, byte [ecx + 0x5d05b8]
mov byte [edx - 3], al
dec edi
jne 0x40cf00
movzx edi, byte [esi]
cmp edi, 0x100
jge 0x40cfc2
lea ebx, [esi + 2]
xor cl, cl
mov eax, ebx
mov edx, edi
test edi, edi
je 0x40cf9e
add cl, byte [eax]
lea eax, [eax + 1]
dec edx
jne 0x40cf96
cmp byte [esi + 1], cl
jne 0x40cfc2
push edi
push ebx
mov ebx, dword [ebp - 0x2b4]
push ebx
call fcn.00547f80
push esi
call fcn.005497d9
push ebx
call fcn.005497d9
add esp, 0x14
jmp 0x40cfe1
push esi
call fcn.005497d9
push dword [ebp - 0x2b4]
call fcn.005497d9
add esp, 8
jmp 0x40cfe1
push ebx
call fcn.005497d9
add esp, 4
pop edi
push 0
push 0
mov ecx, 0x5d05a8
call fcn.00416220
mov ecx, dword [ebp - 0x2c0]
push eax
call fcn.0041d193
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.005463d8
mov esp, ebp
pop ebp
ret
call fcn.00547123
int3