Function at 0x413680
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x15c
mov eax, dword [0x5d6b10]
xor eax, ebp
mov dword [ebp - 4], eax
xor eax, eax
cmp eax, 0x100
jae 0x415741
mov byte [eax + 0x5df668], 0
inc eax
cmp eax, 0x100
jb 0x4136a0
push ebx
push esi
push edi
mov dword [0x5dee28], 0x5df668
call fcn.0040d570
mov ecx, dword [0x5dee28]
mov dword [ecx + 0x24], eax
mov eax, dword [0x5dee28]
add eax, 0x10
push eax
call fcn.00546ddd
push 2
push 0x578404
push 0x5d2f40
push 0x5d2f38
push 0x5df668
push 0x100
call fcn.0040d700
add esp, 0x1c
test eax, eax
jne 0x415710
mov ebx, 0x5cdb68
mov dword [0x5d0608], eax
lea ecx, [ebx + 1]
mov al, byte [ebx]
inc ebx
test al, al
jne 0x413710
mov eax, dword [0x5dee28]
sub ebx, ecx
add eax, 0x71
mov dword [ebp - 0x148], ebx
push 0x28
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.00547f80
add esp, 0xc
lea edx, [ebp - 0x112]
mov esi, 8
movzx ecx, byte [edx - 2]
lea edx, [edx + 5]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 6]
mov byte [edx - 7], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 3], al
dec esi
jne 0x413744
push 0x28
call fcn.00549811
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
test esi, esi
je 0x413ab2
lea esi, [ebp - 0x114]
mov dword [ebp - 0x13c], 8
xor edi, edi
jmp 0x413816
mov ebx, dword [ebp - 0x148]
lea eax, [edi + 1]
xor ecx, ecx
cdq
idiv ebx
mov eax, edi
movzx ebx, byte [edx + 0x5cdb68]
cdq
idiv dword [ebp - 0x148]
movzx eax, byte [edx + 0x5cdb68]
imul ebx, eax
lea eax, [edi + 1]
cmp eax, dword [ebp - 0x148]
cmovge eax, ecx
mov dword [ebp - 0x138], eax
mov edi, ebx
mov dword [ebp - 0x140], ebx
shr edi, 3
test edi, edi
je 0x41387d
lea eax, [esi + 1]
lea esp, [esp]
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x413860
mov ebx, dword [ebp - 0x140]
and ebx, 7
jbe 0x4138b5
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x4138a3
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x413895
test edi, edi
je 0x4138b2
or al, 1
mov byte [ecx], al
dec ebx
jne 0x413882
mov edi, dword [ebp - 0x138]
add esi, 5
dec dword [ebp - 0x13c]
jne 0x413810
xor eax, eax
lea esi, [ebp - 0x114]
mov dword [ebp - 0x138], eax
mov ebx, eax
imul ebx, eax
mov edi, ebx
mov dword [ebp - 0x140], ebx
shr edi, 3
test edi, edi
je 0x413913
lea eax, [esi + 1]
nop
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x4138f0
mov ebx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x138]
and ebx, 7
jbe 0x413956
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
jmp 0x413930
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x41393e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x413930
test edi, edi
je 0x41394d
or al, 1
mov byte [ecx], al
dec ebx
jne 0x413918
mov eax, dword [ebp - 0x138]
inc eax
add esi, 5
mov dword [ebp - 0x138], eax
cmp eax, 8
jl 0x4138d8
xor eax, eax
lea esi, [ebp - 0x114]
mov dword [ebp - 0x138], eax
mov ebx, eax
imul ebx, eax
mov edi, ebx
mov dword [ebp - 0x140], ebx
shr edi, 3
test edi, edi
je 0x4139b3
lea eax, [esi + 1]
mov edi, edi
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x413990
mov ebx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x138]
and ebx, 7
jbe 0x4139f6
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
jmp 0x4139d0
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x4139de
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x4139d0
test edi, edi
je 0x4139ed
or al, 1
mov byte [ecx], al
dec ebx
jne 0x4139b8
mov eax, dword [ebp - 0x138]
inc eax
add esi, 5
mov dword [ebp - 0x138], eax
cmp eax, 8
jl 0x413977
mov eax, dword [ebp - 0x10]
lea esi, [ebp - 0x114]
xorps xmm0, xmm0
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
xor ebx, ebx
movdqu xmmword [eax], xmm0
movdqu xmmword [eax + 0x10], xmm0
movq qword [eax + 0x20], xmm0
mov ecx, eax
mov edi, 5
lea ebx, [ebx]
mov dl, byte [esi]
inc esi
test dl, 1
je 0x413a4e
mov al, byte [ebp + ebx - 0xc]
or byte [ecx], al
test dl, 2
je 0x413a5a
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 1], al
test dl, 4
je 0x413a66
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 2], al
test dl, 8
je 0x413a72
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 3], al
test dl, 0x10
je 0x413a7e
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 4], al
test dl, 0x20
je 0x413a8a
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 5], al
test dl, 0x40
je 0x413a96
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 6], al
test dl, dl
jns 0x413aa1
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 7], al
add ecx, 8
dec edi
jne 0x413a40
mov eax, dword [ebp - 0x10]
inc ebx
cmp ebx, 8
jl 0x413a33
mov esi, eax
push 0x28
lea eax, [ebp - 0x114]
push esi
push eax
call fcn.00547f80
push esi
call fcn.005497d9
add esp, 0x10
lea ecx, [ebp - 0x114]
xor edx, edx
mov al, byte [ebp + edx - 0x113]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, 0x27
jl 0x413ad2
lea edx, [ebp - 0x112]
mov esi, 8
movzx ecx, byte [edx - 2]
lea edx, [edx + 5]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 6]
mov byte [edx - 7], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 3], al
dec esi
jne 0x413af0
push 0x28
call fcn.00549811
mov edi, eax
add esp, 4
mov dword [ebp - 0x10], edi
test edi, edi
je 0x415724
xor eax, eax
lea esi, [ebp - 0x114]
mov dword [ebp - 0x138], eax
mov ebx, eax
imul ebx, eax
mov edi, ebx
mov dword [ebp - 0x140], ebx
shr edi, 3
test edi, edi
je 0x413bf3
lea eax, [esi + 1]
lea esp, [esp]
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x413bd0
mov ebx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x138]
and ebx, 7
jbe 0x413c36
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
jmp 0x413c10
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x413c1e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x413c10
test edi, edi
je 0x413c2d
or al, 1
mov byte [ecx], al
dec ebx
jne 0x413bf8
mov eax, dword [ebp - 0x138]
inc eax
add esi, 5
mov dword [ebp - 0x138], eax
cmp eax, 8
jl 0x413bb5
lea esi, [ebp - 0x114]
mov dword [ebp - 0x13c], 8
xor edi, edi
jmp 0x413c60
lea eax, [edi + 4]
cdq
lea ecx, [edi + 1]
idiv dword [ebp - 0x148]
lea eax, [edi + 3]
movzx ebx, byte [edx + 0x5cdb68]
cdq
idiv dword [ebp - 0x148]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
lea eax, [edi + 2]
cdq
idiv dword [ebp - 0x148]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
mov eax, ecx
cdq
idiv dword [ebp - 0x148]
movzx eax, byte [edx + 0x5cdb68]
add ebx, eax
mov eax, edi
cdq
idiv dword [ebp - 0x148]
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 - 0x148]
mov edi, ebx
mov dword [ebp - 0x140], ebx
cmovge ecx, eax
shr edi, 3
mov dword [ebp - 0x138], ecx
test edi, edi
je 0x413d0d
lea eax, [esi + 1]
mov edi, edi
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x413cf0
mov ebx, dword [ebp - 0x140]
and ebx, 7
jbe 0x413d45
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x413d33
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x413d25
test edi, edi
je 0x413d42
or al, 1
mov byte [ecx], al
dec ebx
jne 0x413d12
mov edi, dword [ebp - 0x138]
add esi, 5
dec dword [ebp - 0x13c]
jne 0x413c60
xor eax, eax
lea esi, [ebp - 0x114]
mov dword [ebp - 0x138], eax
mov ebx, eax
imul ebx, eax
mov edi, ebx
mov dword [ebp - 0x140], ebx
shr edi, 3
test edi, edi
je 0x413da3
lea eax, [esi + 1]
nop
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x413d80
mov ebx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x138]
and ebx, 7
jbe 0x413de6
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
jmp 0x413dc0
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x413dce
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x413dc0
test edi, edi
je 0x413ddd
or al, 1
mov byte [ecx], al
dec ebx
jne 0x413da8
mov eax, dword [ebp - 0x138]
inc eax
add esi, 5
mov dword [ebp - 0x138], eax
cmp eax, 8
jl 0x413d68
xor eax, eax
lea esi, [ebp - 0x114]
mov dword [ebp - 0x138], eax
mov ebx, eax
imul ebx, eax
mov edi, ebx
mov dword [ebp - 0x140], ebx
shr edi, 3
test edi, edi
je 0x413e43
lea eax, [esi + 1]
mov edi, edi
mov bl, byte [esi]
push 4
push eax
push esi
call fcn.005485d0
add esp, 0xc
mov byte [esi + 4], bl
lea eax, [esi + 1]
dec edi
jne 0x413e20
mov ebx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x138]
and ebx, 7
jbe 0x413e86
mov al, byte [esi]
mov ecx, esi
movzx edi, al
mov edx, 4
shr edi, 7
add al, al
mov byte [esi], al
jmp 0x413e60
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jns 0x413e6e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x413e60
test edi, edi
je 0x413e7d
or al, 1
mov byte [ecx], al
dec ebx
jne 0x413e48
mov eax, dword [ebp - 0x138]
inc eax
add esi, 5
mov dword [ebp - 0x138], eax
cmp eax, 8
jl 0x413e07
mov eax, dword [ebp - 0x10]
lea esi, [ebp - 0x114]
xorps xmm0, xmm0
mov dword [ebp - 0xc], 0x8040201
mov dword [ebp - 8], 0x80402010
xor ebx, ebx
movdqu xmmword [eax], xmm0
movdqu xmmword [eax + 0x10], xmm0
movq qword [eax + 0x20], xmm0
mov ecx, eax
mov edi, 5
lea ebx, [ebx]
mov dl, byte [esi]
inc esi
test dl, 1
je 0x413ede
mov al, byte [ebp + ebx - 0xc]
or byte [ecx], al
test dl, 2
je 0x413eea
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 1], al
test dl, 4
je 0x413ef6
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 2], al
test dl, 8
je 0x413f02
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 3], al
test dl, 0x10
je 0x413f0e
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 4], al
test dl, 0x20
je 0x413f1a
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 5], al
test dl, 0x40
je 0x413f26
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 6], al
test dl, dl
jns 0x413f31
mov al, byte [ebp + ebx - 0xc]
or byte [ecx + 7], al
add ecx, 8
dec edi
jne 0x413ed0
mov eax, dword [ebp - 0x10]
inc ebx
cmp ebx, 8
jl 0x413ec3
mov edi, eax
mov esi, 8
lea edx, [edi + 2]
lea ebx, [ebx]
movzx ecx, byte [edx - 2]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 1]
mov byte [edx - 2], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx]
mov byte [edx - 1], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx + 1]
mov byte [edx], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx + 2]
mov byte [edx + 1], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx + 2], al
add edx, 5
dec esi
jne 0x413f50
push 0x28
lea eax, [ebp - 0x114]
push edi
push eax
call fcn.00547f80
push edi
call fcn.005497d9
push 4
lea eax, [ebp - 0x150]
mov dword [ebp - 0x150], 0x78e06cfe
push eax
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x13c], 0x2900
push 0x5d0620
push eax
call fcn.004130d0
mov esi, dword [ebp - 0x148]
mov edi, eax
xor al, al
mov dword [0x5df660], edi
add esp, 0x20
mov dword [ebp - 0x138], eax
xor ecx, ecx
test esi, esi
jle 0x4140de
cmp esi, 0x20
jb 0x4140de
mov eax, esi
and eax, 0x8000001f
jns 0x41406b
dec eax
or eax, 0xffffffe0
inc eax
mov edx, esi
xorps xmm1, xmm1
sub edx, eax
movdqa xmm2, xmm1
mov eax, 0x5cdb78
jmp 0x414080
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 0x414080
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 - 0x138], eax
xor dl, dl
xor bl, bl
cmp ecx, esi
jge 0x414127
mov eax, esi
sub eax, ecx
cmp eax, 2
jl 0x414113
lea eax, [esi - 1]
jmp 0x414100
add dl, byte [ecx + 0x5cdb68]
add bl, byte [ecx + 0x5cdb69]
add ecx, 2
cmp ecx, eax
jl 0x414100
mov eax, dword [ebp - 0x138]
cmp ecx, esi
jge 0x414123
add al, byte [ecx + 0x5cdb68]
add dl, bl
add al, dl
mov esi, dword [ebp - 0x13c]
xor ecx, ecx
sar esi, 8
test esi, esi
jle 0x414157
movzx edx, al
imul edx, esi
add edx, edi
mov edi, edi
movzx eax, byte [edx + ecx]
mov al, byte [ebp + eax - 0x114]
mov byte [ebp + ecx - 0xec], al
inc ecx
cmp ecx, esi
jl 0x414140
push edi
xor bh, bh
xor bl, bl
call fcn.005497d9
add esi, 0xfffffffe
lea edx, [ebp - 0xea]
add esp, 4
mov dword [ebp - 0x158], esi
xor ch, ch
xor ah, ah
xor edi, edi
cmp esi, 2
jl 0x4141a0
add esi, 0xfffffffe
shr esi, 1
inc esi
lea edi, [esi + esi]
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 esi
jne 0x414187
mov esi, dword [ebp - 0x158]
cmp edi, esi
jge 0x4141a8
mov ch, byte [edx]
xor ah, ch
cmp byte [ebp - 0xec], ah
jne 0x415724
add bl, ch
add bl, bh
cmp byte [ebp - 0xeb], bl
jne 0x415724
mov edi, dword [ebp - 0x158]
sub edi, 6
mov dword [ebp - 0x158], edi
cmp edi, 0x10
jl 0x415724
push edi
lea eax, [ebp - 0xea]
lea ebx, [ebp + edi - 0xe4]
push eax
push ebx
mov dword [ebp - 0x150], ebx
call fcn.00547f80
mov al, byte [ebp + edi - 0xea]
xor al, byte [0x5d0618]
mov byte [ebp - 0xc], al
mov al, byte [ebp + edi - 0xe9]
xor al, byte [0x5d0619]
mov byte [ebp - 0xb], al
mov al, byte [ebp + edi - 0xe8]
xor al, byte [0x5d061a]
mov byte [ebp - 0xa], al
mov al, byte [ebp + edi - 0xe7]
xor al, byte [0x5d061b]
mov byte [ebp - 9], al
mov al, byte [ebp + edi - 0xe6]
xor al, byte [0x5d061c]
mov byte [ebp - 8], al
mov al, byte [ebp + edi - 0xe5]
xor al, byte [0x5d061d]
push edi
mov byte [ebp - 7], al
call fcn.00549811
add esp, 0x10
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x138], 6
test eax, eax
jne 0x41427b
xor esi, esi
jmp 0x414677
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 - 0x158]
sar ecx, 3
xor edx, edx
div ecx
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 0x10], eax
test eax, eax
je 0x4143a0
jmp 0x4142b0
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 - 0x144], ecx
mov edi, ebx
mov dword [ebp - 0x154], ebx
shr edi, 3
test edi, edi
je 0x41433b
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x140], eax
jmp 0x414310
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov edx, dword [ebp - 0x14c]
lea ecx, [esi + 1]
mov eax, dword [ebp - 0x140]
add esp, 0xc
mov byte [edx + esi - 1], bl
dec edi
jne 0x414310
mov ebx, dword [ebp - 0x154]
jmp 0x414341
mov edx, dword [ebp - 0x14c]
and ebx, 7
jbe 0x414385
dec edx
mov dword [ebp - 0x140], 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 0x41437b
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x41436e
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x414362
mov edx, dword [ebp - 0x140]
test edi, edi
je 0x414382
or byte [ecx], 1
dec ebx
jne 0x414350
add esi, dword [ebp - 0x14c]
dec dword [ebp - 0x10]
mov edi, dword [ebp - 0x144]
jne 0x4142b0
mov ebx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x158]
mov esi, ebx
mov edi, dword [ebp - 0x14c]
cdq
idiv edi
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x10], eax
test ecx, ecx
jle 0x41449c
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x154], edx
shr edi, 3
test edi, edi
je 0x414422
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x144], eax
lea ebx, [ebx]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x144]
dec edi
jne 0x4143f0
mov edx, dword [ebp - 0x154]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x140]
and edx, 7
mov dword [ebp - 0x154], edx
jbe 0x414482
mov eax, dword [ebp - 0x14c]
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 0x414469
mov edx, ebx
lea ebx, [ebx]
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x41445c
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x414450
mov edx, dword [ebp - 0x154]
test edi, edi
je 0x414470
or byte [ecx], 1
dec edx
mov dword [ebp - 0x154], edx
jne 0x414436
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x140]
mov edi, dword [ebp - 0x14c]
inc eax
add esi, edi
mov dword [ebp - 0x10], eax
cmp eax, ecx
jl 0x4143c6
mov ebx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x158]
mov esi, ebx
cdq
idiv edi
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x10], eax
test ecx, ecx
jle 0x414590
lea esp, [esp]
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x154], edx
shr edi, 3
test edi, edi
je 0x414516
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
dec eax
mov dword [ebp - 0x144], eax
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x144]
dec edi
jne 0x4144e4
mov edx, dword [ebp - 0x154]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x140]
and edx, 7
mov dword [ebp - 0x154], edx
jbe 0x414576
mov eax, dword [ebp - 0x14c]
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 0x41455d
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x414550
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x414544
mov edx, dword [ebp - 0x154]
test edi, edi
je 0x414564
or byte [ecx], 1
dec edx
mov dword [ebp - 0x154], edx
jne 0x414530
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x140]
mov edi, dword [ebp - 0x14c]
inc eax
add esi, edi
mov dword [ebp - 0x10], eax
cmp eax, ecx
jl 0x4144c0
mov ebx, dword [ebp - 0x150]
push dword [ebp - 0x158]
mov dword [ebp - 0x14], 0x8040201
push 0
push dword [ebp - 0x13c]
mov dword [ebp - 0x10], 0x80402010
call fcn.00546e30
add esp, 0xc
mov esi, ebx
xor eax, eax
mov dword [ebp - 0x140], eax
mov edi, edi
add eax, dword [ebp - 0x13c]
xor ebx, ebx
mov dword [ebp - 0x144], eax
mov edi, edi
mov ecx, eax
test edi, edi
jle 0x414649
mov dl, byte [esi]
inc esi
test dl, 1
je 0x4145e4
mov al, byte [ebp + ebx - 0x14]
or byte [ecx], al
test dl, 2
je 0x4145f0
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 2], al
test dl, 4
je 0x4145fc
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 4], al
test dl, 8
je 0x414608
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 6], al
test dl, 0x10
je 0x414614
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 8], al
test dl, 0x20
je 0x414620
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 0xa], al
test dl, 0x40
je 0x41462c
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 0xc], al
test dl, dl
jns 0x414637
mov al, byte [ebp + ebx - 0x14]
or byte [ecx + 0xe], al
add ecx, 0x10
dec edi
jne 0x4145d6
mov edi, dword [ebp - 0x14c]
mov eax, dword [ebp - 0x144]
inc ebx
cmp ebx, 8
jl 0x4145d0
mov eax, dword [ebp - 0x140]
inc eax
mov dword [ebp - 0x140], eax
cmp eax, 2
jl 0x4145c0
mov ebx, dword [ebp - 0x150]
mov esi, dword [ebp - 0x13c]
mov edi, dword [ebp - 0x158]
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 0x4146a2
mov al, byte [ebx + edx + 1]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, esi
jl 0x414693
mov edx, ebx
test edi, edi
jle 0x4146d3
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 + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 1], al
dec esi
jne 0x4146b0
push edi
call fcn.00549811
add esp, 4
mov dword [ebp - 0x154], eax
test eax, eax
je 0x415724
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 - 0x14c], ecx
mov edx, eax
xor eax, eax
mov dword [ebp - 0x140], edx
mov dword [ebp - 0x13c], eax
test edx, edx
jle 0x4147de
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x10], edx
shr edi, 3
test edi, edi
je 0x414772
lea eax, [ecx - 1]
mov dword [ebp - 0x144], 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 - 0x14c]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x144]
dec edi
jne 0x414740
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14c]
mov eax, dword [ebp - 0x13c]
and edx, 7
mov dword [ebp - 0x10], edx
jbe 0x4147c3
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 0x4147aa
mov edx, ebx
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x4147a0
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x414794
mov edx, dword [ebp - 0x10]
test edi, edi
je 0x4147b1
or byte [ecx], 1
dec edx
mov dword [ebp - 0x10], edx
jne 0x414780
mov ecx, dword [ebp - 0x14c]
mov eax, dword [ebp - 0x13c]
inc eax
add esi, ecx
mov dword [ebp - 0x13c], eax
cmp eax, dword [ebp - 0x140]
jl 0x414720
mov ebx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x158]
xor edx, edx
div ecx
mov edi, ebx
mov dword [ebp - 0x13c], 0
mov dword [ebp - 0x140], eax
test eax, eax
je 0x41492f
mov ebx, dword [ebp - 0x13c]
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 - 0x13c]
lea eax, [ecx + 4]
movzx ebx, byte [ebp + ebx - 0xc]
cdq
idiv dword [ebp - 0x138]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
lea eax, [ecx + 3]
cdq
idiv dword [ebp - 0x138]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
lea eax, [ecx + 2]
cdq
idiv dword [ebp - 0x138]
movzx eax, byte [ebp + edx - 0xc]
add ebx, eax
mov eax, esi
cdq
idiv dword [ebp - 0x138]
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 - 0x13c], eax
test esi, esi
je 0x4148cd
mov eax, dword [ebp - 0x14c]
lea ecx, [edi + 1]
dec eax
mov dword [ebp - 0x144], eax
mov bl, byte [edi]
push eax
push ecx
push edi
call fcn.005485d0
mov edx, dword [ebp - 0x14c]
lea ecx, [edi + 1]
mov eax, dword [ebp - 0x144]
add esp, 0xc
mov byte [edx + edi - 1], bl
dec esi
jne 0x4148a5
mov ebx, dword [ebp - 0x10]
jmp 0x4148d3
mov edx, dword [ebp - 0x14c]
and ebx, 7
jbe 0x414915
dec edx
mov dword [ebp - 0x144], 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 0x41490b
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x4148fe
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x4148f2
mov edx, dword [ebp - 0x144]
test esi, esi
je 0x414912
or byte [ecx], 1
dec ebx
jne 0x4148e0
mov ecx, dword [ebp - 0x14c]
add edi, ecx
dec dword [ebp - 0x140]
jne 0x414802
mov ebx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x158]
mov esi, ebx
cdq
idiv ecx
mov edx, eax
xor eax, eax
mov dword [ebp - 0x140], edx
mov dword [ebp - 0x13c], eax
test edx, edx
jle 0x414a20
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x138], edx
shr edi, 3
test edi, edi
je 0x4149a7
lea eax, [ecx - 1]
mov dword [ebp - 0x144], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x144]
dec edi
jne 0x414972
mov edx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp - 0x14c]
and edx, 7
mov dword [ebp - 0x138], edx
jbe 0x414a05
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 0x4149e9
mov edx, ebx
lea esp, [esp]
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x4149dc
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x4149d0
mov edx, dword [ebp - 0x138]
test edi, edi
je 0x4149f0
or byte [ecx], 1
dec edx
mov dword [ebp - 0x138], edx
jne 0x4149b5
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp - 0x14c]
inc eax
add esi, ecx
mov dword [ebp - 0x13c], eax
cmp eax, dword [ebp - 0x140]
jl 0x414952
mov ebx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x158]
mov esi, ebx
cdq
idiv ecx
mov edx, eax
xor eax, eax
mov dword [ebp - 0x140], edx
mov dword [ebp - 0x13c], eax
test edx, edx
jle 0x414b10
mov edx, eax
imul edx, eax
mov edi, edx
mov dword [ebp - 0x138], edx
shr edi, 3
test edi, edi
je 0x414a98
lea eax, [ecx - 1]
mov dword [ebp - 0x144], eax
lea ecx, [esi + 1]
mov bl, byte [esi]
push eax
push ecx
push esi
call fcn.005485d0
mov eax, dword [ebp - 0x14c]
lea ecx, [esi + 1]
add esp, 0xc
mov byte [eax + esi - 1], bl
mov eax, dword [ebp - 0x144]
dec edi
jne 0x414a63
mov edx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp - 0x14c]
and edx, 7
mov dword [ebp - 0x138], edx
jbe 0x414af5
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 0x414ad9
mov edx, ebx
lea ebx, [ebx]
mov al, byte [ecx + 1]
inc ecx
test al, al
jns 0x414acc
or byte [ecx - 1], 1
add al, al
mov byte [ecx], al
dec edx
jne 0x414ac0
mov edx, dword [ebp - 0x138]
test edi, edi
je 0x414ae0
or byte [ecx], 1
dec edx
mov dword [ebp - 0x138], edx
jne 0x414aa6
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp - 0x14c]
inc eax
add esi, ecx
mov dword [ebp - 0x13c], eax
cmp eax, dword [ebp - 0x140]
jl 0x414a43
mov ebx, dword [ebp - 0x150]
push dword [ebp - 0x158]
mov esi, dword [ebp - 0x154]
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 - 0x140], eax
lea ecx, [ecx]
mov ecx, dword [ebp - 0x14c]
add eax, esi
mov dword [ebp - 0x144], eax
xor edi, edi
test ecx, ecx
jle 0x414bc3
mov esi, ecx
mov dl, byte [ebx]
inc ebx
test dl, 1
je 0x414b64
mov cl, byte [ebp + edi - 0xc]
or byte [eax], cl
test dl, 2
je 0x414b70
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 2], cl
test dl, 4
je 0x414b7c
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 4], cl
test dl, 8
je 0x414b88
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 6], cl
test dl, 0x10
je 0x414b94
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 8], cl
test dl, 0x20
je 0x414ba0
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 0xa], cl
test dl, 0x40
je 0x414bac
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 0xc], cl
test dl, dl
jns 0x414bb7
mov cl, byte [ebp + edi - 0xc]
or byte [eax + 0xe], cl
add eax, 0x10
dec esi
jne 0x414b56
mov ecx, dword [ebp - 0x14c]
mov eax, dword [ebp - 0x144]
inc edi
cmp edi, 8
jl 0x414b50
mov eax, dword [ebp - 0x140]
mov esi, dword [ebp - 0x154]
inc eax
mov dword [ebp - 0x140], eax
cmp eax, 2
jl 0x414b40
mov ebx, dword [ebp - 0x158]
mov edi, esi
mov edx, edi
test ebx, ebx
jle 0x414c23
mov esi, ebx
jmp 0x414c00
movzx ecx, byte [edx]
lea edx, [edx + 1]
mov eax, ecx
and ecx, 0xf
shr eax, 4
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 1], al
dec esi
jne 0x414c00
movzx eax, word [edi + 5]
cmp eax, dword [0x5d0610]
jne 0x415256
mov edx, dword [edi + 0x17]
mov al, 1
mov ecx, edx
shr edx, 3
and ecx, 7
shl al, cl
and al, byte [edx + 0x5dee60]
jne 0x415256
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 0x415248
lea esi, [eax - 6]
mov eax, dword [0x5dedfc]
test al, 1
jne 0x414d05
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 0x414d25
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 - 0x148], ebx
test ebx, ebx
je 0x4151ed
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 - 0x150], 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 0x414d80
mov ebx, dword [ebp - 0x148]
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 + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 3], al
dec esi
jne 0x414da0
push 0x100
call fcn.00549811
add esp, 4
mov dword [ebp - 0x138], eax
test eax, eax
je 0x4151e4
xor edx, edx
or eax, 0xffffffff
sub eax, ebx
mov dword [ebp - 0x13c], edx
mov edi, ebx
mov dword [ebp - 0x140], 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 - 0x154]
add ecx, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x13c]
movzx ebx, byte [eax + ecx]
mov eax, esi
cdq
mov ecx, 0xa
idiv ecx
mov ecx, dword [ebp - 0x154]
movzx eax, byte [edx + ecx]
mov edx, esi
imul ebx, eax
xor eax, eax
cmp edx, 0xa
cmovge edx, eax
mov dword [ebp - 0x13c], edx
mov esi, ebx
mov dword [ebp - 0x144], ebx
shr esi, 3
test esi, esi
je 0x414ed6
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 0x414eb4
mov ebx, dword [ebp - 0x144]
mov edx, dword [ebp - 0x13c]
and ebx, 7
jbe 0x414ef4
mov cl, byte [edi]
lea ecx, [ecx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x414eef
or cl, 1
dec ebx
jne 0x414ee0
mov byte [edi], cl
mov eax, dword [ebp - 0x140]
inc edi
inc eax
add eax, edi
cmp eax, 0x100
jb 0x414e50
xor edx, edx
mov dword [ebp - 0x13c], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x144], esi
shr edi, 3
test edi, edi
je 0x414f63
mov ecx, dword [ebp - 0x150]
mov esi, dword [ebp - 0x13c]
add ecx, esi
mov eax, dword [ebp - 0x148]
add eax, esi
push 0
push ecx
push eax
mov bl, byte [eax]
call fcn.005485d0
mov ecx, dword [ebp - 0x150]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
dec edi
jne 0x414f33
mov esi, dword [ebp - 0x144]
mov edx, dword [ebp - 0x13c]
mov ebx, dword [ebp - 0x148]
and esi, 7
jbe 0x414f86
mov cl, byte [ebx + edx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x414f80
or cl, 1
dec esi
jne 0x414f71
mov byte [ebx + edx], cl
inc edx
mov dword [ebp - 0x13c], edx
cmp edx, 0x100
jl 0x414f11
xor edx, edx
mov dword [ebp - 0x13c], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x144], esi
shr edi, 3
test edi, edi
je 0x414ff4
mov ecx, dword [ebp - 0x150]
mov esi, dword [ebp - 0x13c]
add ecx, esi
lea eax, [ebx + esi]
mov bl, byte [eax]
push 0
push ecx
push eax
call fcn.005485d0
mov ecx, dword [ebp - 0x150]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
mov ebx, dword [ebp - 0x148]
dec edi
jne 0x414fc3
mov esi, dword [ebp - 0x144]
mov edx, dword [ebp - 0x13c]
mov ebx, dword [ebp - 0x148]
and esi, 7
jbe 0x415017
mov cl, byte [ebx + edx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x415011
or cl, 1
dec esi
jne 0x415002
mov byte [ebx + edx], cl
inc edx
mov dword [ebp - 0x13c], edx
cmp edx, 0x100
jl 0x414fa1
push 0x100
push 0
push dword [ebp - 0x138]
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 - 0x138]
xor edx, edx
lea eax, [ecx + 0x20]
add eax, edi
mov dword [ebp - 0x144], eax
mov bl, byte [esi]
inc esi
test bl, 1
je 0x415079
mov al, byte [ebp + edx - 0xc]
or byte [edi + ecx], al
mov eax, dword [ebp - 0x144]
lea ecx, [eax]
test bl, 2
je 0x415086
mov al, byte [ebp + edx - 0xc]
or byte [ecx], al
test bl, 4
je 0x415092
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x20], al
test bl, 8
je 0x41509e
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x40], al
test bl, 0x10
je 0x4150aa
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x60], al
test bl, 0x20
je 0x4150b9
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x80], al
test bl, 0x40
je 0x4150c8
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xa0], al
test bl, bl
jns 0x4150d6
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xc0], al
mov ecx, dword [ebp - 0x138]
inc edx
lea eax, [ecx + 0x20]
lea eax, [eax + edi]
cmp edx, 8
jl 0x415064
inc edi
cmp edi, 0x20
jl 0x415051
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 + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 3], al
dec edi
jne 0x415100
movzx edi, byte [esi]
cmp edi, 0x100
jge 0x4151c8
lea ebx, [esi + 2]
xor cl, cl
mov eax, ebx
mov edx, edi
test edi, edi
je 0x41519e
add cl, byte [eax]
lea eax, [eax + 1]
dec edx
jne 0x415196
cmp byte [esi + 1], cl
jne 0x4151c8
push edi
push ebx
mov ebx, dword [ebp - 0x148]
push ebx
call fcn.00547f80
push esi
call fcn.005497d9
push ebx
call fcn.005497d9
mov edi, dword [ebp - 0x154]
add esp, 0x14
jmp 0x4151ed
push esi
call fcn.005497d9
push dword [ebp - 0x148]
call fcn.005497d9
mov edi, dword [ebp - 0x154]
add esp, 8
jmp 0x4151ed
push ebx
call fcn.005497d9
add esp, 4
mov eax, dword [0x5dee08]
test al, 1
jne 0x415217
mov ecx, 0x406210
or eax, 1
sub ecx, 0x4177e0
mov dword [0x5dee08], eax
sub ecx, 0x96f2
mov dword [0x5dee04], ecx
jmp 0x41521d
mov ecx, dword [0x5dee04]
movzx eax, word [0x5dee58]
add eax, ecx
add eax, 0x4177e0
push edi
mov dword [0x5d5c14], eax
call fcn.005497d9
add esp, 4
mov dword [0x5d060c], 0
jmp 0x415724
push edi
call fcn.005497d9
add esp, 4
jmp 0x415724
push dword [ebp - 0x148]
push 0x5cdb68
push 0x5cdb68
call fcn.00549730
push 0x200
call fcn.00549811
mov ebx, eax
add esp, 0x10
mov dword [ebp - 0x148], ebx
test ebx, ebx
je 0x415724
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 - 0x150], 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 0x4152b0
mov ebx, dword [ebp - 0x148]
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 + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 3], al
dec esi
jne 0x4152d0
push 0x100
call fcn.00549811
add esp, 4
mov dword [ebp - 0x138], eax
test eax, eax
je 0x415705
xor edx, edx
or eax, 0xffffffff
sub eax, ebx
mov dword [ebp - 0x13c], edx
mov edi, ebx
mov dword [ebp - 0x140], 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 - 0x154]
add ecx, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x13c]
movzx ebx, byte [eax + ecx]
mov eax, esi
cdq
mov ecx, 0xa
idiv ecx
mov ecx, dword [ebp - 0x154]
movzx eax, byte [edx + ecx]
mov edx, esi
imul ebx, eax
xor eax, eax
cmp edx, 0xa
cmovge edx, eax
mov dword [ebp - 0x13c], edx
mov esi, ebx
mov dword [ebp - 0x144], ebx
shr esi, 3
test esi, esi
je 0x415406
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 0x4153e4
mov ebx, dword [ebp - 0x144]
mov edx, dword [ebp - 0x13c]
and ebx, 7
jbe 0x415424
mov cl, byte [edi]
lea ecx, [ecx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x41541f
or cl, 1
dec ebx
jne 0x415410
mov byte [edi], cl
mov eax, dword [ebp - 0x140]
inc edi
inc eax
add eax, edi
cmp eax, 0x100
jb 0x415380
xor edx, edx
mov dword [ebp - 0x13c], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x144], esi
shr edi, 3
test edi, edi
je 0x415493
mov ecx, dword [ebp - 0x150]
mov esi, dword [ebp - 0x13c]
add ecx, esi
mov eax, dword [ebp - 0x148]
add eax, esi
push 0
push ecx
push eax
mov bl, byte [eax]
call fcn.005485d0
mov ecx, dword [ebp - 0x150]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
dec edi
jne 0x415463
mov esi, dword [ebp - 0x144]
mov edx, dword [ebp - 0x13c]
mov ebx, dword [ebp - 0x148]
and esi, 7
jbe 0x4154b6
mov cl, byte [edx + ebx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x4154b0
or cl, 1
dec esi
jne 0x4154a1
mov byte [edx + ebx], cl
inc edx
mov dword [ebp - 0x13c], edx
cmp edx, 0x100
jl 0x415441
xor edx, edx
mov dword [ebp - 0x13c], edx
mov esi, edx
imul esi, edx
mov edi, esi
mov dword [ebp - 0x144], esi
shr edi, 3
test edi, edi
je 0x415524
mov ecx, dword [ebp - 0x150]
mov esi, dword [ebp - 0x13c]
add ecx, esi
lea eax, [esi + ebx]
mov bl, byte [eax]
push 0
push ecx
push eax
call fcn.005485d0
mov ecx, dword [ebp - 0x150]
add esp, 0xc
add ecx, esi
mov byte [ecx - 1], bl
mov ebx, dword [ebp - 0x148]
dec edi
jne 0x4154f3
mov esi, dword [ebp - 0x144]
mov edx, dword [ebp - 0x13c]
mov ebx, dword [ebp - 0x148]
and esi, 7
jbe 0x415547
mov cl, byte [edx + ebx]
movzx eax, cl
add cl, cl
shr eax, 7
test eax, eax
je 0x415541
or cl, 1
dec esi
jne 0x415532
mov byte [edx + ebx], cl
inc edx
mov dword [ebp - 0x13c], edx
cmp edx, 0x100
jl 0x4154d1
push 0x100
push 0
push dword [ebp - 0x138]
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 - 0x138]
xor edx, edx
lea eax, [ecx + 0x20]
add eax, edi
mov dword [ebp - 0x144], eax
mov bl, byte [esi]
inc esi
test bl, 1
je 0x4155a9
mov al, byte [ebp + edx - 0xc]
or byte [edi + ecx], al
mov eax, dword [ebp - 0x144]
lea ecx, [eax]
test bl, 2
je 0x4155b6
mov al, byte [ebp + edx - 0xc]
or byte [ecx], al
test bl, 4
je 0x4155c2
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x20], al
test bl, 8
je 0x4155ce
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x40], al
test bl, 0x10
je 0x4155da
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x60], al
test bl, 0x20
je 0x4155e9
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0x80], al
test bl, 0x40
je 0x4155f8
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xa0], al
test bl, bl
jns 0x415606
mov al, byte [ebp + edx - 0xc]
or byte [ecx + 0xc0], al
mov ecx, dword [ebp - 0x138]
inc edx
lea eax, [ecx + 0x20]
lea eax, [eax + edi]
cmp edx, 8
jl 0x415594
inc edi
cmp edi, 0x20
jl 0x415581
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 + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 5]
mov byte [edx - 6], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 4]
mov byte [edx - 5], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
movzx ecx, byte [edx - 3]
mov byte [edx - 4], al
mov eax, ecx
shr eax, 4
and ecx, 0xf
mov al, byte [eax + 0x5d2f88]
shl al, 4
or al, byte [ecx + 0x5d2f88]
mov byte [edx - 3], al
dec edi
jne 0x415630
movzx edi, byte [esi]
cmp edi, 0x100
jge 0x4156f2
lea ebx, [esi + 2]
xor cl, cl
mov eax, ebx
mov edx, edi
test edi, edi
je 0x4156ce
add cl, byte [eax]
lea eax, [eax + 1]
dec edx
jne 0x4156c6
cmp byte [esi + 1], cl
jne 0x4156f2
push edi
push ebx
mov ebx, dword [ebp - 0x148]
push ebx
call fcn.00547f80
push esi
call fcn.005497d9
push ebx
call fcn.005497d9
add esp, 0x14
jmp 0x415724
push esi
call fcn.005497d9
push dword [ebp - 0x148]
call fcn.005497d9
jmp 0x415721
push ebx
call fcn.005497d9
add esp, 4
jmp 0x415724
lea eax, [ebp - 0x134]
push 0x576c63
push eax
call fcn.0040d9c0
add esp, 8
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
mov dword [0x5dee2c], 0
pop ebx
call fcn.005463d8
mov esp, ebp
pop ebp
ret
call fcn.00547123
int3