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

Disassembly:
sub esp, 0x38
mov ecx, dword [esp + 0x40]
push ebx
push ebp
push esi
mov edx, ecx
push edi
mov edi, dword [esp + 0x4c]
xor eax, eax
shr ecx, 2
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x14], 0
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x42bac0]
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
test eax, eax
mov ebp, ecx
je 0x406dbc
cmp eax, 2
jbe 0x407a20
cmp eax, 4
ja 0x407a20
cmp ebp, 0x10
jl 0x407a20
cmp ebp, 0x18
jg 0x407a20
mov ecx, dword [esp + 0x58]
mov edi, ebx
test ecx, ecx
je 0x40664c
xor ecx, ecx
cmp eax, 4
mov al, byte [edx + 0x53]
sete cl
mov esi, ecx
mov cx, word [edx + 0x1e]
mov byte [esp + 0x58], al
mov word [esp + 0x44], cx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x38], esi
mov edi, ecx
mov ecx, eax
mov dword [esp + 0x20], edi
je 0x406097
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x4060af
cmp al, 0x5a
jg 0x4060af
test esi, esi
je 0x406083
cmp al, 0x39
jg 0x4060af
jmp 0x40608b
cmp al, 0x38
jle 0x40608b
cmp al, 0x41
jl 0x4060af
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edi
jb 0x40606e
xor eax, eax
test esi, esi
setne al
lea eax, [eax*8 + 0xc]
mov ebp, eax
mov eax, dword [esp + 0x50]
cmp ebp, eax
jbe 0x4060bc
xor eax, eax
mov ebp, eax
mov dword [esp + 0x14], ebp
jmp 0x406c51
mov edi, ebp
test esi, esi
mov dword [esp + 0x10], edi
jne 0x40612b
mov edi, dword [esp + 0x50]
xor eax, eax
test edi, edi
mov esi, ebx
mov ecx, 1
jbe 0x40610a
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406100
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x4060f3
inc eax
mov ecx, 1
dec edx
je 0x4060fc
cmp eax, edi
jb 0x4060e3
jmp 0x406100
cmp eax, edi
jb 0x4060d7
cmp ecx, 1
je 0x40610a
cmp eax, edi
jae 0x40610a
inc eax
mov edi, eax
cmp ebp, eax
mov dword [esp + 0x10], edi
jae 0x40611a
mov edi, ebp
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x40612b
mov edi, 0x29e
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x20]
xor ecx, ecx
shr esi, 2
mov eax, ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x50], esi
je 0x406183
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
dec esi
jne 0x406140
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x20]
and edx, 3
mov dword [esp + 0x40], edx
jbe 0x4061a6
mov esi, ecx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea ecx, [esi + ecx*2]
add ecx, ebx
inc eax
dec edx
jne 0x406190
mov dword [esp + 0x2c], ecx
push 0x53c
call fcn.0041b0d5
mov esi, eax
push 0x29e
mov dword [esp + 0x24], esi
call fcn.0041b0d5
movzx bp, byte [esp + 0x60]
mov ecx, 1
add esp, 8
cmp di, cx
mov dword [esp + 0x14], eax
mov word [esi], 0
jbe 0x406228
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [eax + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [edi - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x10]
jb 0x4061ef
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
xor ebx, ebx
xor ebp, ebp
cmp esi, ebx
mov dword [esp + 0x18], ebp
lea eax, [eax + edi - 1]
jbe 0x406287
mov ecx, ebp
xor edx, edx
mov dl, byte [eax]
shr ecx, 0x1f
lea ecx, [ecx + ebp*2]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ebp, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add ebp, ecx
dec eax
dec esi
jne 0x406244
mov dword [esp + 0x18], ebp
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
jbe 0x4062a5
mov edx, ebp
shr edx, 0x1f
lea ebp, [edx + ebp*2]
xor edx, edx
mov dl, byte [eax]
add ebp, edx
dec eax
dec ecx
jne 0x40628f
mov dword [esp + 0x18], ebp
mov esi, dword [0x42bbcc]
mov dword [esp + 0x40], edi
xor edi, edi
mov dword [esp + 0x30], ebx
mov ecx, dword [esi*4 + 0x42b840]
mov dword [esp + 0x44], ebx
cmp ecx, ebx
mov eax, 1
mov dword [esp + 0x50], edi
je 0x40632a
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x3c], dl
je 0x4062f2
mov edx, dword [esp + 0x3c]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x4062f2
cmp edx, dword [0x42bbc8]
jle 0x406322
mov edx, dword [ecx]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
lea ebx, [ecx + 5]
mov ecx, dword [0x42bac0]
mov dword [esp + 0x44], edx
mov dword [esp + 0x28], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x40632a
mov dword [esp + 0x28], 8
jmp 0x40632a
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
test esi, esi
jbe 0x40650e
mov ecx, dword [esp + 0x40]
mov dl, byte [ecx]
inc ecx
test dl, dl
mov byte [esp + 0x24], dl
mov dword [esp + 0x40], ecx
je 0x4064e3
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x4063ac
cmp dl, 0x37
jne 0x40636d
mov dl, 0x49
mov dword [esp + 0x34], 5
add dl, 0xc5
mov byte [esp + 0x24], dl
jmp 0x4063c0
cmp dl, 0x38
jne 0x406385
mov dl, 0x4f
mov dword [esp + 0x34], 5
add dl, 0xc5
mov byte [esp + 0x24], dl
jmp 0x4063c0
cmp dl, 0x41
jb 0x40639b
add dl, 0xc5
mov dword [esp + 0x34], 5
mov byte [esp + 0x24], dl
jmp 0x4063c0
add dl, 0xcf
mov dword [esp + 0x34], 5
mov byte [esp + 0x24], dl
jmp 0x4063c0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x34], 1
and eax, 0xff
or ah, 1
mov ecx, 8
sub ecx, dword [esp + 0x54]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x4063e4
add eax, eax
test dl, 1
je 0x4063de
or al, 1
shr dl, 1
mov byte [esp + 0x24], dl
cmp eax, 0x100
jl 0x4064b8
mov esi, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], edi
mov byte [ecx + edx], al
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x44]
jae 0x4064ab
test ebx, ebx
je 0x4064ab
mov ecx, dword [esp + 0x20]
mov eax, dword [ebx]
cmp eax, ecx
jne 0x40649f
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x2c]
cmp edx, eax
jne 0x40649f
cmp dword [ebx + 8], ebp
jne 0x40649f
mov ecx, dword [esp + 0x28]
xor eax, eax
test ecx, ecx
jle 0x406495
mov edi, dword [esp + 0x20]
sub edi, ecx
mov ecx, dword [esp + 0x3c]
lea ebp, [ebx + ecx + 4]
mov edx, dword [esp + 0x54]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x406489
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x406489
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
jl 0x406455
jmp 0x40648d
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
cmp eax, ecx
jne 0x40649f
add edi, 0xffff
mov ecx, dword [esp + 0x30]
inc ecx
add ebx, 0x1c
mov dword [esp + 0x30], ecx
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0x24]
mov eax, 1
mov ecx, dword [esp + 0x34]
dec ecx
mov dword [esp + 0x34], ecx
je 0x4064d3
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x4063cd
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x406336
cmp eax, 1
je 0x40650e
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jae 0x40650e
add eax, eax
cmp eax, 0x100
jl 0x4064f4
mov edi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [edi + ecx*2]
mov ecx, dword [esp + 0x14]
mov byte [edx + ecx], al
mov bl, byte [esp + 0x58]
xor edi, edi
cmp esi, edi
mov dword [esp + 0x50], edi
mov byte [esp + 0x54], bl
jbe 0x4065d2
xor ecx, ecx
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x40653c
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, bl
mov byte [eax + ecx], dl
jmp 0x406569
mov eax, dword [esp + 0x54]
mov esi, 0xa
and eax, 0xff
mov ebp, 0xa
cdq
idiv esi
mov esi, dword [esp + 0x14]
xor eax, eax
mov al, byte [esi + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv ebp
add dl, 0x30
mov byte [esi + ecx], dl
add bl, dl
xor ebp, ebp
test ecx, ecx
mov byte [esp + 0x54], bl
jbe 0x4065aa
mov eax, 1
cmp ecx, eax
jbe 0x4065a1
mov esi, dword [esp + 0x14]
xor edx, edx
mov dl, byte [esi + ebp]
mov esi, edx
mov ebx, dword [esp + 0x14]
xor edx, edx
mov dl, byte [eax + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc eax
cmp eax, ecx
jb 0x406589
inc ebp
cmp ebp, ecx
jb 0x406575
mov bl, byte [esp + 0x54]
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, 0x6a
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x50], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x406526
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
xor edx, edx
test eax, eax
jbe 0x406610
mov esi, dword [esp + 0x4c]
xor ecx, ecx
xor eax, eax
mov ax, word [ebx + ecx*2]
mov al, byte [eax + ebp]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x4065ea
cmp dword [0x42b714], edi
je 0x406628
mov dword [0x42b714], edi
mov dword [0x42b710], 1
push ebp
call fcn.0041b0ca
push ebx
call fcn.0041b0ca
mov eax, dword [esp + 0x18]
mov edx, dword [0x42bac0]
mov ebp, eax
add esp, 8
mov dword [esp + 0x14], ebp
jmp 0x406c51
xor ecx, ecx
cmp eax, 4
mov al, byte [edx + 0x54]
sete cl
mov esi, ecx
mov cx, word [edx + 0x34]
mov byte [esp + 0x58], al
mov word [esp + 0x44], cx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x2c], esi
mov edi, ecx
mov ecx, eax
mov dword [esp + 0x24], edi
je 0x4066a7
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x4066bf
cmp al, 0x5a
jg 0x4066bf
test esi, esi
je 0x406693
cmp al, 0x39
jg 0x4066bf
jmp 0x40669b
cmp al, 0x38
jle 0x40669b
cmp al, 0x41
jl 0x4066bf
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edi
jb 0x40667e
xor eax, eax
test esi, esi
setne al
lea eax, [eax*8 + 0xc]
mov ebp, eax
mov eax, dword [esp + 0x50]
cmp ebp, eax
jbe 0x4066c6
xor eax, eax
jmp 0x406c4b
mov edi, ebp
test esi, esi
mov dword [esp + 0x10], edi
jne 0x406735
mov edi, dword [esp + 0x50]
xor eax, eax
test edi, edi
mov esi, ebx
mov ecx, 1
jbe 0x406714
mov dl, byte [esi]
inc esi
test dl, dl
je 0x40670a
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x4066fd
inc eax
mov ecx, 1
dec edx
je 0x406706
cmp eax, edi
jb 0x4066ed
jmp 0x40670a
cmp eax, edi
jb 0x4066e1
cmp ecx, 1
je 0x406714
cmp eax, edi
jae 0x406714
inc eax
mov edi, eax
cmp ebp, eax
mov dword [esp + 0x10], edi
jae 0x406724
mov edi, ebp
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x406735
mov edi, 0x29e
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x24]
xor ecx, ecx
shr esi, 2
mov eax, ebx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x50], esi
je 0x40678d
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
dec esi
jne 0x40674a
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x24]
and edx, 3
mov dword [esp + 0x40], edx
jbe 0x4067b0
mov esi, ecx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea ecx, [esi + ecx*2]
add ecx, ebx
inc eax
dec edx
jne 0x40679a
mov dword [esp + 0x38], ecx
push 0x53c
call fcn.0041b0d5
mov esi, eax
push 0x29e
mov dword [esp + 0x24], esi
call fcn.0041b0d5
movzx bp, byte [esp + 0x60]
mov ecx, 1
add esp, 8
cmp di, cx
mov dword [esp + 0x14], eax
mov word [esi], 0
jbe 0x406832
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [eax + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [edi - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x10]
jb 0x4067f9
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x50]
xor ebx, ebx
xor ebp, ebp
cmp esi, ebx
mov dword [esp + 0x18], ebp
lea eax, [eax + edi - 1]
jbe 0x406891
mov ecx, ebp
xor edx, edx
mov dl, byte [eax]
shr ecx, 0x1f
lea ecx, [ecx + ebp*2]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ebp, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add ebp, ecx
dec eax
dec esi
jne 0x40684e
mov dword [esp + 0x18], ebp
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
jbe 0x4068af
mov edx, ebp
shr edx, 0x1f
lea ebp, [edx + ebp*2]
xor edx, edx
mov dl, byte [eax]
add ebp, edx
dec eax
dec ecx
jne 0x406899
mov dword [esp + 0x18], ebp
mov esi, dword [0x42bbcc]
mov dword [esp + 0x44], edi
xor edi, edi
mov dword [esp + 0x34], ebx
mov ecx, dword [esi*4 + 0x42b840]
mov dword [esp + 0x40], ebx
cmp ecx, ebx
mov eax, 1
mov dword [esp + 0x50], edi
je 0x406934
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x3c], dl
je 0x4068fc
mov edx, dword [esp + 0x3c]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x4068fc
cmp edx, dword [0x42bbc8]
jle 0x40692c
mov edx, dword [ecx]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
lea ebx, [ecx + 5]
mov ecx, dword [0x42bac0]
mov dword [esp + 0x40], edx
mov dword [esp + 0x28], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x406934
mov dword [esp + 0x28], 8
jmp 0x406934
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
test esi, esi
jbe 0x406b18
mov ecx, dword [esp + 0x44]
mov dl, byte [ecx]
inc ecx
test dl, dl
mov byte [esp + 0x20], dl
mov dword [esp + 0x44], ecx
je 0x406aed
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jne 0x4069b6
cmp dl, 0x37
jne 0x406977
mov dl, 0x49
mov dword [esp + 0x30], 5
add dl, 0xc5
mov byte [esp + 0x20], dl
jmp 0x4069ca
cmp dl, 0x38
jne 0x40698f
mov dl, 0x4f
mov dword [esp + 0x30], 5
add dl, 0xc5
mov byte [esp + 0x20], dl
jmp 0x4069ca
cmp dl, 0x41
jb 0x4069a5
add dl, 0xc5
mov dword [esp + 0x30], 5
mov byte [esp + 0x20], dl
jmp 0x4069ca
add dl, 0xcf
mov dword [esp + 0x30], 5
mov byte [esp + 0x20], dl
jmp 0x4069ca
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], 1
and eax, 0xff
or ah, 1
mov ecx, 8
sub ecx, dword [esp + 0x54]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jne 0x4069ee
add eax, eax
test dl, 1
je 0x4069e8
or al, 1
shr dl, 1
mov byte [esp + 0x20], dl
cmp eax, 0x100
jl 0x406ac2
mov esi, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], edi
mov byte [ecx + edx], al
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x40]
jae 0x406ab5
test ebx, ebx
je 0x406ab5
mov ecx, dword [esp + 0x24]
mov eax, dword [ebx]
cmp eax, ecx
jne 0x406aa9
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x406aa9
cmp dword [ebx + 8], ebp
jne 0x406aa9
mov ecx, dword [esp + 0x28]
xor eax, eax
test ecx, ecx
jle 0x406a9f
mov edi, dword [esp + 0x24]
sub edi, ecx
mov ecx, dword [esp + 0x3c]
lea ebp, [ebx + ecx + 4]
mov edx, dword [esp + 0x54]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x406a93
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x406a93
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
jl 0x406a5f
jmp 0x406a97
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
cmp eax, ecx
jne 0x406aa9
add edi, 0xffff
mov ecx, dword [esp + 0x34]
inc ecx
add ebx, 0x1c
mov dword [esp + 0x34], ecx
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0x20]
mov eax, 1
mov ecx, dword [esp + 0x30]
dec ecx
mov dword [esp + 0x30], ecx
je 0x406add
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x4069d7
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x406940
cmp eax, 1
je 0x406b18
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jae 0x406b18
add eax, eax
cmp eax, 0x100
jl 0x406afe
mov edi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [edi + ecx*2]
mov ecx, dword [esp + 0x14]
mov byte [edx + ecx], al
mov bl, byte [esp + 0x58]
xor edi, edi
cmp esi, edi
mov dword [esp + 0x50], edi
mov byte [esp + 0x54], bl
jbe 0x406bdc
xor ecx, ecx
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x406b46
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, bl
mov byte [eax + ecx], dl
jmp 0x406b73
mov eax, dword [esp + 0x54]
mov esi, 0xa
and eax, 0xff
mov ebp, 0xa
cdq
idiv esi
mov esi, dword [esp + 0x14]
xor eax, eax
mov al, byte [esi + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv ebp
add dl, 0x30
mov byte [esi + ecx], dl
add bl, dl
xor ebp, ebp
test ecx, ecx
mov byte [esp + 0x54], bl
jbe 0x406bb4
mov eax, 1
cmp ecx, eax
jbe 0x406bab
mov esi, dword [esp + 0x14]
xor edx, edx
mov dl, byte [esi + ebp]
mov esi, edx
mov ebx, dword [esp + 0x14]
xor edx, edx
mov dl, byte [eax + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc eax
cmp eax, ecx
jb 0x406b93
inc ebp
cmp ebp, ecx
jb 0x406b7f
mov bl, byte [esp + 0x54]
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, 0x6a
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x50], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x406b30
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
xor edx, edx
test eax, eax
jbe 0x406c1a
mov esi, dword [esp + 0x4c]
xor ecx, ecx
xor eax, eax
mov ax, word [ebx + ecx*2]
mov al, byte [eax + ebp]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x406bf4
cmp dword [0x42b714], edi
je 0x406c32
mov dword [0x42b714], edi
mov dword [0x42b710], 1
push ebp
call fcn.0041b0ca
push ebx
call fcn.0041b0ca
mov eax, dword [esp + 0x18]
mov edx, dword [0x42bac0]
add esp, 8
mov dword [esp + 0x14], eax
mov ebp, eax
cmp dword [edx + 8], 3
jne 0x406ccf
lea esi, [ebp - 1]
xor cl, cl
xor eax, eax
test esi, esi
jle 0x406c7e
mov edx, dword [esp + 0x4c]
mov bl, cl
shr bl, 7
mov dl, byte [eax + edx]
add cl, cl
xor dl, al
xor dl, 0x6a
add dl, bl
add cl, dl
inc eax
cmp eax, esi
jl 0x406c62
mov esi, dword [esp + 0x4c]
mov dl, byte [esi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x406ca3
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
xor eax, eax
xor ecx, ecx
add esi, 5
mov bl, cl
xor edx, edx
mov dl, byte [esi + ecx]
add bl, 5
and ebx, 0xff
xor edx, ebx
xor edx, 0x6a
shl eax, 5
add eax, edx
inc ecx
cmp ecx, 6
jl 0x406caa
jmp 0x406d67
mov edi, dword [esp + 0x4c]
xor esi, esi
xor eax, eax
mov dl, al
xor ecx, ecx
mov cl, byte [edi + eax + 0xd]
add dl, 0xd
and edx, 0xff
xor ecx, edx
lea edx, [esi + esi*4]
xor ecx, 0x6a
inc eax
cmp eax, 7
lea esi, [ecx + edx*2 - 0x30]
jl 0x406cd7
xor ecx, ecx
xor eax, eax
xor edx, edx
mov ebx, eax
mov dl, byte [eax + edi]
and ebx, 0xff
xor edx, ebx
mov ebx, ecx
xor edx, 0x6a
shr ebx, 0x1f
add edx, ebx
inc eax
cmp eax, 0xd
lea ecx, [edx + ecx*2]
jl 0x406cfe
and ecx, 0x7fffff
cmp esi, ecx
je 0x406d3e
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
xor eax, eax
xor ecx, ecx
lea esi, [edi + 5]
mov bl, cl
xor edx, edx
mov dl, byte [esi + ecx]
add bl, 5
and ebx, 0xff
lea eax, [eax + eax*4]
xor edx, ebx
xor edx, 0x6a
inc ecx
cmp ecx, 8
lea eax, [edx + eax*2 - 0x30]
jl 0x406d45
xor dl, dl
xor ecx, ecx
mov byte [esp + 0x50], dl
mov edi, dword [esp + 0x4c]
shr dl, 7
mov bl, byte [ecx + edi]
xor bl, cl
xor bl, 0x6a
add bl, dl
mov dl, byte [esp + 0x50]
add dl, dl
add dl, bl
inc ecx
cmp ecx, 5
mov byte [esp + 0x50], dl
jl 0x406d6f
mov ecx, dword [0x42bac0]
cmp dl, byte [ecx + 0x1d]
je 0x406db1
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov dword [0x42b780], esi
jmp 0x4079de
cmp ebp, 8
jl 0x407a20
lea edx, [ebp - 7]
push edx
call fcn.0041ac70
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x10], ebx
je 0x407a20
mov eax, dword [esp + 0x54]
lea ecx, [ebp - 8]
mov edx, ecx
mov edi, ebx
lea esi, [eax + 3]
mov eax, dword [esp + 0x58]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [ebx + ebp - 8], 0
mov edi, ebx
test eax, eax
mov eax, dword [0x42bac0]
mov bp, word [eax]
je 0x4073e3
mov cl, byte [eax + 0x53]
mov dx, word [eax + 0x1e]
shr ebp, 0xb
mov byte [esp + 0x54], cl
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov word [esp + 0x44], dx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x28], edx
je 0x406e5d
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406e80
cmp al, 0x5a
jg 0x406e80
cmp al, 0x38
jle 0x406e51
cmp al, 0x41
jl 0x406e80
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x406e3e
movsx eax, byte [ebx + 1]
lea ecx, [eax + eax*2]
lea edx, [eax + ecx*4]
movsx eax, byte [ebx]
lea ecx, [eax + edx*2 - 0x6db]
mov edx, dword [esp + 0x50]
cmp ecx, edx
mov dword [esp + 0x40], ecx
lea eax, [ebx + 2]
jbe 0x406e87
xor eax, eax
jmp 0x4079c9
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x406ecb
mov edi, dword [esp + 0x50]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406ec1
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406eb4
inc eax
mov ecx, 1
dec edx
je 0x406ebd
cmp eax, edi
jb 0x406ea4
jmp 0x406ec1
cmp eax, edi
jb 0x406e98
cmp ecx, 1
je 0x406ecb
cmp eax, edi
jae 0x406ecb
inc eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
cmp ecx, eax
jae 0x406edb
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406eec
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x28]
xor edx, edx
mov esi, edi
mov eax, ebx
shr esi, 2
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], esi
je 0x406f46
mov ecx, edx
shr ecx, 0x1f
lea ecx, [ecx + edx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea edx, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add edx, ecx
inc eax
dec esi
jne 0x406f03
mov dword [esp + 0x3c], edx
mov ecx, edi
and ecx, 3
mov dword [esp + 0x34], ecx
jbe 0x406f67
mov esi, edx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea edx, [esi + edx*2]
add edx, ebx
inc eax
dec ecx
jne 0x406f51
mov dword [esp + 0x3c], edx
push 0x53c
call fcn.0041b0d5
mov ebx, eax
push 0x29e
mov dword [esp + 0x24], ebx
call fcn.0041b0d5
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [ebx], 0
jne 0x406ff5
movzx bp, byte [esp + 0x54]
mov ecx, 1
cmp word [esp + 0x58], cx
jbe 0x407065
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [edi - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x58]
jb 0x406fba
jmp 0x407065
mov al, byte [esp + 0x54]
mov cl, 1
mov byte [esp + 0x50], al
mov al, byte [esp + 0x58]
cmp al, cl
jbe 0x407065
mov ebp, dword [esp + 0x44]
mov esi, 1
and ebp, 0xff
lea edi, [ebx + 2]
mov edx, dword [esp + 0x50]
lea eax, [esi + ebp]
and edx, 0xff
add edi, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x50]
mov byte [esp + 0x44], dl
xor dl, cl
add al, dl
mov byte [esp + 0x50], al
mov eax, dword [esp + 0x44]
and eax, 0xff
mov dx, word [ebx + eax*2]
lea eax, [ebx + eax*2]
mov word [edi - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x58]
inc esi
cmp cl, al
jb 0x407019
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x40]
xor edx, edx
test esi, esi
mov dword [esp + 0x38], edx
lea eax, [eax + ecx - 1]
jbe 0x4070c2
mov ecx, edx
shr ecx, 0x1f
lea ecx, [ecx + edx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea edx, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add edx, ecx
dec eax
dec esi
jne 0x40707f
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
jbe 0x4070e0
mov esi, edx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea edx, [esi + edx*2]
add edx, ebx
dec eax
dec ecx
jne 0x4070ca
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x42bbcc]
xor edi, edi
xor ebx, ebx
mov ecx, dword [esi*4 + 0x42b840]
lea eax, [edx + 2]
mov dword [esp + 0x44], eax
cmp ecx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x40], edi
mov eax, 1
mov dword [esp + 0x14], edi
je 0x407166
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x407136
mov edx, dword [esp + 0x50]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x407136
cmp edx, dword [0x42bbc8]
jle 0x407162
mov edx, dword [ecx]
mov edi, dword [esp + 0x14]
lea ebx, [ecx + 5]
mov ecx, dword [0x42bac0]
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x407166
mov dword [esp + 0x24], 8
jmp 0x407166
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x58]
test esi, esi
jbe 0x407301
mov edx, dword [esp + 0x44]
mov cl, byte [edx]
inc edx
test cl, cl
mov dword [esp + 0x44], edx
je 0x4072d2
cmp cl, 0x37
jne 0x407191
mov cl, 0x49
add cl, 0xc5
jmp 0x4071aa
cmp cl, 0x38
jne 0x40719d
mov cl, 0x4f
add cl, 0xc5
jmp 0x4071aa
cmp cl, 0x41
jb 0x4071a7
add cl, 0xc5
jmp 0x4071aa
add cl, 0xcf
mov ebp, dword [esp + 0x10]
mov edx, 8
sub edx, ebp
mov dword [esp + 0x2c], 5
mov dword [esp + 0x30], edx
add eax, eax
test cl, 1
je 0x4071ca
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x50], cl
jl 0x4072a7
mov ebp, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebp + edx*2]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov byte [esi + edx], al
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x40]
jae 0x40729e
test ebx, ebx
je 0x40729e
mov edx, dword [ebx]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x407292
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
cmp eax, edx
jne 0x407292
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x407292
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x407288
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
sub edi, edx
lea ebp, [ecx + ebx + 4]
mov edx, dword [esp + 0x10]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x40727c
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [edi + esi]
cmp dl, cl
jne 0x40727c
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x407248
jmp 0x407280
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
mov cl, byte [esp + 0x50]
cmp eax, edx
jne 0x407292
add edi, 0xffff
mov edx, dword [esp + 0x34]
inc edx
add ebx, 0x1c
mov dword [esp + 0x34], edx
mov esi, dword [esp + 0x58]
mov eax, 1
mov edx, dword [esp + 0x2c]
dec edx
mov dword [esp + 0x2c], edx
je 0x4072c2
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x4071c1
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x407172
cmp eax, 1
je 0x407301
mov edx, dword [esp + 0x58]
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x407301
add eax, eax
cmp eax, 0x100
jl 0x4072e7
mov esi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [esi + ecx*2]
mov ecx, dword [esp + 0x18]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0x58]
mov dl, byte [esp + 0x54]
xor edi, edi
cmp ecx, edi
mov dword [esp + 0x14], edi
jbe 0x407385
xor eax, eax
mov ecx, dword [esp + 0x18]
xor ebp, ebp
mov bl, byte [eax + ecx]
xor bl, dl
add dl, bl
mov byte [eax + ecx], bl
test eax, eax
mov byte [esp + 0x50], dl
jbe 0x407362
mov ecx, 1
cmp eax, ecx
jbe 0x40735d
mov esi, dword [esp + 0x18]
xor edx, edx
mov dl, byte [esi + ebp]
mov esi, edx
mov ebx, dword [esp + 0x18]
xor edx, edx
mov dl, byte [ecx + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc ecx
cmp ecx, eax
jb 0x407341
mov dl, byte [esp + 0x50]
inc ebp
cmp ebp, eax
jb 0x40732d
mov ecx, dword [esp + 0x18]
mov bl, byte [eax + ecx]
xor bl, 0x6a
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x58]
inc eax
mov dword [esp + 0x14], eax
and eax, 0xffff
cmp eax, ecx
jb 0x407315
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
xor edx, edx
test ecx, ecx
jbe 0x4073bf
mov esi, dword [esp + 0x4c]
xor ecx, ecx
xor eax, eax
mov ax, word [ebx + ecx*2]
mov al, byte [eax + ebp]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x58]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x407399
cmp dword [0x42b714], edi
je 0x4073d7
mov dword [0x42b714], edi
mov dword [0x42b710], 1
push ebp
call fcn.0041b0ca
push ebx
jmp 0x4079b9
mov cl, byte [eax + 0x54]
mov dx, word [eax + 0x34]
shr ebp, 0xb
mov byte [esp + 0x54], cl
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov word [esp + 0x44], dx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x28], edx
je 0x407438
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406e80
cmp al, 0x5a
jg 0x406e80
cmp al, 0x38
jle 0x40742c
cmp al, 0x41
jl 0x406e80
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x40740d
movsx eax, byte [ebx + 1]
lea ecx, [eax + eax*2]
lea edx, [eax + ecx*4]
movsx eax, byte [ebx]
lea ecx, [eax + edx*2 - 0x6db]
mov edx, dword [esp + 0x50]
cmp ecx, edx
mov dword [esp + 0x40], ecx
lea eax, [ebx + 2]
jbe 0x407462
xor eax, eax
jmp 0x4079c9
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x4074a6
mov edi, dword [esp + 0x50]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x40749c
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x40748f
inc eax
mov ecx, 1
dec edx
je 0x407498
cmp eax, edi
jb 0x40747f
jmp 0x40749c
cmp eax, edi
jb 0x407473
cmp ecx, 1
je 0x4074a6
cmp eax, edi
jae 0x4074a6
inc eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
cmp ecx, eax
jae 0x4074b6
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
mov eax, 0x29e
cmp ecx, eax
jbe 0x4074c7
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x28]
xor edx, edx
mov esi, edi
mov eax, ebx
shr esi, 2
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], esi
je 0x407521
mov ecx, edx
shr ecx, 0x1f
lea ecx, [ecx + edx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea edx, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add edx, ecx
inc eax
dec esi
jne 0x4074de
mov dword [esp + 0x3c], edx
mov ecx, edi
and ecx, 3
mov dword [esp + 0x34], ecx
jbe 0x407542
mov esi, edx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea edx, [esi + edx*2]
add edx, ebx
inc eax
dec ecx
jne 0x40752c
mov dword [esp + 0x3c], edx
push 0x53c
call fcn.0041b0d5
mov ebx, eax
push 0x29e
mov dword [esp + 0x24], ebx
call fcn.0041b0d5
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [ebx], 0
jne 0x4075d0
movzx bp, byte [esp + 0x54]
mov ecx, 1
cmp word [esp + 0x58], cx
jbe 0x407640
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [edi - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x58]
jb 0x407595
jmp 0x407640
mov al, byte [esp + 0x54]
mov cl, 1
mov byte [esp + 0x50], al
mov al, byte [esp + 0x58]
cmp al, cl
jbe 0x407640
mov ebp, dword [esp + 0x44]
mov esi, 1
and ebp, 0xff
lea edi, [ebx + 2]
mov edx, dword [esp + 0x50]
lea eax, [esi + ebp]
and edx, 0xff
add edi, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x50]
mov byte [esp + 0x44], dl
xor dl, cl
add al, dl
mov byte [esp + 0x50], al
mov eax, dword [esp + 0x44]
and eax, 0xff
mov dx, word [ebx + eax*2]
lea eax, [ebx + eax*2]
mov word [edi - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x58]
inc esi
cmp cl, al
jb 0x4075f4
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x40]
xor edx, edx
test esi, esi
mov dword [esp + 0x38], edx
lea eax, [eax + ecx - 1]
jbe 0x40769d
mov ecx, edx
shr ecx, 0x1f
lea ecx, [ecx + edx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
dec eax
mov edx, ecx
shr edx, 0x1f
lea edx, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add edx, ecx
dec eax
dec esi
jne 0x40765a
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
jbe 0x4076bb
mov esi, edx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea edx, [esi + edx*2]
add edx, ebx
dec eax
dec ecx
jne 0x4076a5
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x42bbcc]
xor edi, edi
xor ebx, ebx
mov ecx, dword [esi*4 + 0x42b840]
lea eax, [edx + 2]
mov dword [esp + 0x44], eax
cmp ecx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x40], edi
mov eax, 1
mov dword [esp + 0x14], edi
je 0x407741
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x407711
mov edx, dword [esp + 0x50]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x407711
cmp edx, dword [0x42bbc8]
jle 0x40773d
mov edx, dword [ecx]
mov edi, dword [esp + 0x14]
lea ebx, [ecx + 5]
mov ecx, dword [0x42bac0]
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x407741
mov dword [esp + 0x24], 8
jmp 0x407741
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x58]
test esi, esi
jbe 0x4078dc
mov edx, dword [esp + 0x44]
mov cl, byte [edx]
inc edx
test cl, cl
mov dword [esp + 0x44], edx
je 0x4078ad
cmp cl, 0x37
jne 0x40776c
mov cl, 0x49
add cl, 0xc5
jmp 0x407785
cmp cl, 0x38
jne 0x407778
mov cl, 0x4f
add cl, 0xc5
jmp 0x407785
cmp cl, 0x41
jb 0x407782
add cl, 0xc5
jmp 0x407785
add cl, 0xcf
mov ebp, dword [esp + 0x10]
mov edx, 8
sub edx, ebp
mov dword [esp + 0x2c], 5
mov dword [esp + 0x30], edx
add eax, eax
test cl, 1
je 0x4077a5
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x50], cl
jl 0x407882
mov ebp, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebp + edx*2]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov byte [esi + edx], al
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x40]
jae 0x407879
test ebx, ebx
je 0x407879
mov edx, dword [ebx]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x40786d
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
cmp eax, edx
jne 0x40786d
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x40786d
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x407863
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
sub edi, edx
lea ebp, [ecx + ebx + 4]
mov edx, dword [esp + 0x10]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x407857
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x407857
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x407823
jmp 0x40785b
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x50]
mov edi, dword [esp + 0x14]
cmp eax, edx
jne 0x40786d
add edi, 0xffff
mov edx, dword [esp + 0x34]
inc edx
add ebx, 0x1c
mov dword [esp + 0x34], edx
mov esi, dword [esp + 0x58]
mov eax, 1
mov edx, dword [esp + 0x2c]
dec edx
mov dword [esp + 0x2c], edx
je 0x40789d
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x40779c
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x40774d
cmp eax, 1
je 0x4078dc
mov edx, dword [esp + 0x58]
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x4078dc
add eax, eax
cmp eax, 0x100
jl 0x4078c2
mov esi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [esi + ecx*2]
mov ecx, dword [esp + 0x18]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0x58]
mov dl, byte [esp + 0x54]
xor edi, edi
cmp ecx, edi
mov dword [esp + 0x14], edi
jbe 0x407960
xor eax, eax
mov ecx, dword [esp + 0x18]
xor ebp, ebp
mov bl, byte [ecx + eax]
xor bl, dl
add dl, bl
mov byte [ecx + eax], bl
test eax, eax
mov byte [esp + 0x50], dl
jbe 0x40793d
mov ecx, 1
cmp eax, ecx
jbe 0x407938
mov esi, dword [esp + 0x18]
xor edx, edx
mov dl, byte [esi + ebp]
mov esi, edx
mov ebx, dword [esp + 0x18]
xor edx, edx
mov dl, byte [ecx + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc ecx
cmp ecx, eax
jb 0x40791c
mov dl, byte [esp + 0x50]
inc ebp
cmp ebp, eax
jb 0x407908
mov ecx, dword [esp + 0x18]
mov bl, byte [ecx + eax]
xor bl, 0x6a
mov byte [ecx + eax], bl
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x58]
inc eax
mov dword [esp + 0x14], eax
and eax, 0xffff
cmp eax, ecx
jb 0x4078f0
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
xor edx, edx
test ecx, ecx
jbe 0x40799a
mov ebp, dword [esp + 0x4c]
xor ecx, ecx
xor eax, eax
mov ax, word [esi + ecx*2]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + ebp], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x58]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x407974
cmp dword [0x42b714], edi
je 0x4079b2
mov dword [0x42b714], edi
mov dword [0x42b710], 1
push ebx
call fcn.0041b0ca
push esi
call fcn.0041b0ca
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x60]
add esp, 8
push ebx
mov dword [esp + 0x18], eax
call fcn.0041add3
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x18]
add esp, 4
test ebp, ebp
je 0x407a20
mov ecx, dword [0x42bac0]
mov edx, dword [ecx + 8]
test edx, edx
je 0x407a20
mov edx, dword [0x42b780]
xor ecx, ecx
mov byte [edx], 8
xor edx, edx
mov esi, 0xa
div esi
mov esi, dword [0x42b780]
sub esi, ecx
add dl, 0x30
inc ecx
cmp ecx, 8
mov byte [esi + 8], dl
jl 0x4079fa
mov eax, dword [0x42b780]
mov byte [eax + 9], 0
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret