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

Disassembly:
sub esp, 0x34
mov ecx, dword [esp + 0x3c]
push ebx
push ebp
push esi
mov edx, ecx
push edi
mov edi, dword [esp + 0x48]
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov ebx, dword [esp + 0x50]
and ecx, 3
mov dword [esp + 0x14], 0
rep stosb byte es:[edi], al
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x427550]
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
test eax, eax
mov ebp, ecx
je 0x40673e
cmp eax, 2
jbe 0x40739a
cmp eax, 4
ja 0x40739a
cmp ebp, 0x10
jl 0x40739a
cmp ebp, 0x18
jg 0x40739a
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x405fc3
xor ecx, ecx
cmp eax, 4
mov al, byte [edx + 0x53]
mov edi, ebx
sete cl
mov ebp, ecx
mov cx, word [edx + 0x1e]
mov byte [esp + 0x54], al
mov word [esp + 0x40], cx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x34], ebp
mov esi, ecx
mov ecx, eax
mov dword [esp + 0x24], esi
je 0x405a17
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x405a2b
cmp al, 0x5a
jg 0x405a2b
test ebp, ebp
je 0x405a03
cmp al, 0x39
jg 0x405a2b
jmp 0x405a0b
cmp al, 0x38
jle 0x405a0b
cmp al, 0x41
jl 0x405a2b
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, esi
jb 0x4059ee
mov esi, ebp
mov eax, dword [esp + 0x4c]
neg esi
sbb esi, esi
and esi, 8
add esi, 0xc
cmp esi, eax
jbe 0x405a38
xor eax, eax
mov ebp, eax
mov dword [esp + 0x14], ebp
jmp 0x4065d3
test ebp, ebp
mov dword [esp + 0x10], esi
jne 0x405aa4
mov ebp, dword [esp + 0x4c]
xor eax, eax
test ebp, ebp
mov edi, ebx
mov ecx, 1
jbe 0x405a84
mov dl, byte [edi]
inc edi
test dl, dl
je 0x405a7a
mov edx, 5
shl ecx, 1
cmp ecx, 0x100
jl 0x405a6d
inc eax
mov ecx, 1
dec edx
je 0x405a76
cmp eax, ebp
jae 0x405a7a
jmp 0x405a5d
cmp eax, ebp
jb 0x405a51
cmp ecx, 1
je 0x405a84
cmp eax, ebp
jae 0x405a84
inc eax
mov ecx, eax
cmp esi, eax
mov dword [esp + 0x10], ecx
jae 0x405a94
mov ecx, esi
mov dword [esp + 0x10], ecx
cmp ecx, 0x29e
jbe 0x405aa4
mov dword [esp + 0x10], 0x29e
mov ebp, dword [esp + 0x24]
xor edx, edx
mov esi, ebp
mov eax, ebx
shr esi, 2
mov dword [esp + 0x20], edx
mov dword [esp + 0x3c], esi
je 0x405b00
mov edi, esi
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 edi
jne 0x405abd
mov dword [esp + 0x20], edx
mov edi, ebp
and edi, 3
mov dword [esp + 0x4c], edi
jbe 0x405b23
mov ecx, edi
mov ebx, edx
shr ebx, 0x1f
lea edx, [ebx + edx*2]
xor ebx, ebx
mov bl, byte [eax]
add edx, ebx
inc eax
dec ecx
jne 0x405b0d
mov dword [esp + 0x20], edx
push 0x53c
call fcn.004190d5
mov ebp, eax
push 0x29e
mov dword [esp + 0x20], ebp
call fcn.004190d5
mov ecx, 1
add esp, 8
cmp word [esp + 0x10], cx
mov ebx, eax
mov word [ebp], 0
mov dword [esp + 0x38], ebx
movzx bp, byte [esp + 0x54]
jbe 0x405bb6
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x40]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [esi + ebx]
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 + 0x18]
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 0x405b71
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x50]
xor edx, edx
test esi, esi
mov dword [esp + 0x28], edx
lea eax, [eax + ecx - 1]
jbe 0x405c0f
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 0x405bcc
mov dword [esp + 0x28], edx
test edi, edi
jbe 0x405c2b
mov ecx, edi
mov esi, edx
shr esi, 0x1f
lea esi, [esi + edx*2]
xor edx, edx
mov dl, byte [eax]
add edx, esi
dec eax
dec ecx
jne 0x405c15
mov dword [esp + 0x28], edx
mov esi, dword [0x427644]
mov edx, dword [esp + 0x50]
xor edi, edi
xor ebp, ebp
mov ecx, dword [esi*4 + 0x4272d0]
mov dword [esp + 0x2c], edi
cmp ecx, edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], edx
mov eax, 1
mov dword [esp + 0x4c], edi
je 0x405cae
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x30], dl
je 0x405c82
mov edx, dword [esp + 0x30]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x405c7e
cmp edx, dword [0x427640]
jle 0x405caa
mov edi, dword [esp + 0x4c]
mov edx, dword [ecx]
lea ebp, [ecx + 5]
mov ecx, dword [0x427550]
mov dword [esp + 0x40], edx
mov dword [esp + 0x14], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x405cae
mov dword [esp + 0x14], 8
jmp 0x405cae
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x10]
test edx, edx
jbe 0x405e89
mov esi, dword [esp + 0x3c]
mov cl, byte [esi]
inc esi
test cl, cl
mov byte [esp + 0x1c], cl
mov dword [esp + 0x3c], esi
je 0x405e62
mov esi, dword [esp + 0x34]
test esi, esi
jne 0x405d30
cmp cl, 0x37
jne 0x405cf1
mov cl, 0x49
mov dword [esp + 0x30], 5
add cl, 0xc5
mov byte [esp + 0x1c], cl
jmp 0x405d44
cmp cl, 0x38
jne 0x405d09
mov cl, 0x4f
mov dword [esp + 0x30], 5
add cl, 0xc5
mov byte [esp + 0x1c], cl
jmp 0x405d44
cmp cl, 0x41
jb 0x405d1f
add cl, 0xc5
mov dword [esp + 0x30], 5
mov byte [esp + 0x1c], cl
jmp 0x405d44
add cl, 0xcf
mov dword [esp + 0x30], 5
mov byte [esp + 0x1c], cl
jmp 0x405d44
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], 1
and eax, 0xff
or ah, 1
mov esi, dword [esp + 0x34]
test esi, esi
jne 0x405d5b
shl eax, 1
test cl, 1
je 0x405d55
or al, 1
shr cl, 1
mov byte [esp + 0x1c], cl
cmp eax, 0x100
jl 0x405e37
mov esi, dword [esp + 0x18]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x4c], edi
mov byte [ecx + ebx], al
mov eax, dword [esp + 0x2c]
cmp eax, edx
jae 0x405e2a
test ebp, ebp
je 0x405e2a
mov eax, dword [ebp]
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jne 0x405e2a
mov ecx, dword [ebp + 4]
mov eax, dword [esp + 0x20]
cmp ecx, eax
jne 0x405e2a
mov edx, dword [ebp + 8]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x405e2a
mov ecx, dword [esp + 0x14]
xor eax, eax
test ecx, ecx
jle 0x405e0f
mov esi, dword [esp + 0x50]
mov ecx, ebp
sub ecx, esi
lea edi, [ecx + 0xc]
add esi, eax
mov dl, al
add dl, 0x55
mov cl, byte [edi + esi]
xor cl, dl
mov dl, byte [esi]
cmp cl, dl
jne 0x405e0f
mov cl, byte [eax + ebp + 0x14]
mov esi, dword [esp + 0x14]
mov dl, al
add dl, 0x77
xor cl, dl
mov edx, eax
sub edx, esi
mov esi, dword [esp + 0x24]
add edx, esi
mov esi, dword [esp + 0x50]
cmp cl, byte [edx + esi]
jne 0x405e0f
mov ecx, dword [esp + 0x14]
inc eax
cmp eax, ecx
jl 0x405dd2
cmp eax, dword [esp + 0x14]
jne 0x405e1d
add dword [esp + 0x4c], 0xffff
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x4c]
inc eax
mov dword [esp + 0x2c], eax
mov cl, byte [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov eax, 1
mov esi, dword [esp + 0x30]
dec esi
mov dword [esp + 0x30], esi
je 0x405e52
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x405d44
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x405cba
cmp eax, 1
je 0x405e89
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x405e89
shl eax, 1
cmp eax, 0x100
jl 0x405e73
mov esi, dword [esp + 0x18]
xor edx, edx
mov dx, word [esi + ecx*2]
mov byte [edx + ebx], al
mov esi, dword [esp + 0x10]
mov al, byte [esp + 0x54]
xor edi, edi
xor ebp, ebp
test esi, esi
mov byte [esp + 0x4c], al
jbe 0x405f52
jmp 0x405ea7
mov al, byte [esp + 0x4c]
mov ecx, dword [esp + 0x34]
test ecx, ecx
mov ecx, ebp
jne 0x405ec1
and ecx, 0xffff
mov dl, byte [ebx + ecx]
xor dl, al
mov byte [ebx + ecx], dl
jmp 0x405eef
mov eax, dword [esp + 0x4c]
mov esi, 0xa
and eax, 0xff
and ecx, 0xffff
cdq
idiv esi
xor eax, eax
mov al, byte [ebx + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv esi
mov al, byte [esp + 0x4c]
add dl, 0x30
mov byte [ebx + ecx], dl
add al, dl
xor esi, esi
test ecx, ecx
mov byte [esp + 0x4c], al
mov dword [esp + 0x50], esi
jbe 0x405f34
mov eax, 1
cmp ecx, eax
jbe 0x405f2b
xor edx, edx
mov dl, byte [esi + ebx]
mov esi, edx
xor edx, edx
mov dl, byte [eax + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
mov ebx, dword [esp + 0x38]
add edi, edx
inc eax
cmp eax, ecx
jb 0x405f0f
mov esi, dword [esp + 0x50]
inc esi
cmp esi, ecx
mov dword [esp + 0x50], esi
jb 0x405eff
mov al, byte [ebx + ecx]
xor al, 0x6a
inc ebp
mov byte [ebx + ecx], al
mov ecx, dword [esp + 0x10]
mov eax, ebp
and eax, 0xffff
cmp eax, ecx
jb 0x405ea3
mov esi, ecx
xor edx, edx
test esi, esi
jbe 0x405f85
xor ecx, ecx
mov ebp, dword [esp + 0x18]
xor eax, eax
mov ax, word [ebp + ecx*2]
mov ebp, dword [esp + 0x48]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + ebp], al
and eax, 0xff
add edi, eax
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, esi
jb 0x405f5a
cmp dword [0x4271b0], edi
je 0x405f9d
mov dword [0x4271b0], edi
mov dword [0x4271ac], 1
push ebx
call fcn.004190ca
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004190ca
mov edx, dword [0x427550]
mov eax, esi
mov ebp, eax
add esp, 8
mov dword [esp + 0x14], ebp
jmp 0x4065d3
xor ecx, ecx
cmp eax, 4
mov al, byte [edx + 0x54]
mov edi, ebx
sete cl
mov ebp, ecx
mov cx, word [edx + 0x34]
mov byte [esp + 0x54], al
mov word [esp + 0x40], cx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x2c], ebp
mov esi, ecx
mov ecx, eax
mov dword [esp + 0x20], esi
je 0x406020
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406034
cmp al, 0x5a
jg 0x406034
test ebp, ebp
je 0x40600c
cmp al, 0x39
jg 0x406034
jmp 0x406014
cmp al, 0x38
jle 0x406014
cmp al, 0x41
jl 0x406034
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, esi
jb 0x405ff7
mov esi, ebp
mov eax, dword [esp + 0x4c]
neg esi
sbb esi, esi
and esi, 8
add esi, 0xc
cmp esi, eax
jbe 0x40603b
xor eax, eax
jmp 0x4065cd
test ebp, ebp
mov dword [esp + 0x10], esi
jne 0x4060a7
mov ebp, dword [esp + 0x4c]
xor eax, eax
test ebp, ebp
mov edi, ebx
mov ecx, 1
jbe 0x406087
mov dl, byte [edi]
inc edi
test dl, dl
je 0x40607d
mov edx, 5
shl ecx, 1
cmp ecx, 0x100
jl 0x406070
inc eax
mov ecx, 1
dec edx
je 0x406079
cmp eax, ebp
jae 0x40607d
jmp 0x406060
cmp eax, ebp
jb 0x406054
cmp ecx, 1
je 0x406087
cmp eax, ebp
jae 0x406087
inc eax
mov ecx, eax
cmp esi, eax
mov dword [esp + 0x10], ecx
jae 0x406097
mov ecx, esi
mov dword [esp + 0x10], ecx
cmp ecx, 0x29e
jbe 0x4060a7
mov dword [esp + 0x10], 0x29e
mov ebp, dword [esp + 0x20]
xor edx, edx
mov esi, ebp
mov eax, ebx
shr esi, 2
mov dword [esp + 0x38], edx
mov dword [esp + 0x4c], esi
je 0x406103
mov edi, esi
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 edi
jne 0x4060c0
mov dword [esp + 0x38], edx
mov edi, ebp
and edi, 3
mov dword [esp + 0x3c], edi
jbe 0x406126
mov ecx, edi
mov ebx, edx
shr ebx, 0x1f
lea edx, [ebx + edx*2]
xor ebx, ebx
mov bl, byte [eax]
add edx, ebx
inc eax
dec ecx
jne 0x406110
mov dword [esp + 0x38], edx
push 0x53c
call fcn.004190d5
mov ebp, eax
push 0x29e
mov dword [esp + 0x20], ebp
call fcn.004190d5
mov ecx, 1
add esp, 8
cmp word [esp + 0x10], cx
mov ebx, eax
mov word [ebp], 0
mov dword [esp + 0x28], ebx
movzx bp, byte [esp + 0x54]
jbe 0x4061bf
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x40]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [esi + ebx]
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 + 0x18]
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 0x406174
mov ebp, dword [esp + 0x50]
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
jmp 0x4061c3
mov ebp, dword [esp + 0x50]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x50], 0
test esi, esi
lea eax, [eax + ebp - 1]
jbe 0x40621e
mov ecx, dword [esp + 0x50]
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 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
dec esi
mov dword [esp + 0x50], ecx
jne 0x4061d7
test edi, edi
jbe 0x40623e
mov edx, dword [esp + 0x50]
mov ecx, edi
mov esi, edx
shr esi, 0x1f
lea esi, [esi + edx*2]
xor edx, edx
mov dl, byte [eax]
add edx, esi
dec eax
dec ecx
jne 0x406228
mov dword [esp + 0x50], edx
mov esi, dword [0x427644]
xor edi, edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x34], edi
mov ecx, dword [esi*4 + 0x4272d0]
mov dword [esp + 0x3c], edi
cmp ecx, edi
mov dword [esp + 0x40], ebp
mov eax, 1
mov dword [esp + 0x4c], edi
je 0x4062c3
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x30], dl
je 0x406293
mov edx, dword [esp + 0x30]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x40628f
cmp edx, dword [0x427640]
jle 0x4062bf
mov edi, dword [esp + 0x4c]
mov edx, dword [ecx]
add ecx, 5
mov dword [esp + 0x24], ecx
mov ecx, dword [0x427550]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x1c], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x4062c3
mov dword [esp + 0x1c], 8
jmp 0x4062c3
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x10]
test edx, edx
jbe 0x40649e
mov esi, dword [esp + 0x40]
mov cl, byte [esi]
inc esi
test cl, cl
mov byte [esp + 0x14], cl
mov dword [esp + 0x40], esi
je 0x406477
mov esi, dword [esp + 0x2c]
test esi, esi
jne 0x406345
cmp cl, 0x37
jne 0x406306
mov cl, 0x49
mov dword [esp + 0x30], 5
add cl, 0xc5
mov byte [esp + 0x14], cl
jmp 0x406359
cmp cl, 0x38
jne 0x40631e
mov cl, 0x4f
mov dword [esp + 0x30], 5
add cl, 0xc5
mov byte [esp + 0x14], cl
jmp 0x406359
cmp cl, 0x41
jb 0x406334
add cl, 0xc5
mov dword [esp + 0x30], 5
mov byte [esp + 0x14], cl
jmp 0x406359
add cl, 0xcf
mov dword [esp + 0x30], 5
mov byte [esp + 0x14], cl
jmp 0x406359
mov eax, dword [esp + 0x14]
mov dword [esp + 0x30], 1
and eax, 0xff
or ah, 1
mov esi, dword [esp + 0x2c]
test esi, esi
jne 0x406370
shl eax, 1
test cl, 1
je 0x40636a
or al, 1
shr cl, 1
mov byte [esp + 0x14], cl
cmp eax, 0x100
jl 0x40644c
mov esi, dword [esp + 0x18]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x4c], edi
mov byte [ecx + ebx], al
mov eax, dword [esp + 0x34]
cmp eax, edx
jae 0x40643f
mov eax, dword [esp + 0x24]
test eax, eax
je 0x40643f
mov ecx, dword [esp + 0x20]
mov edx, dword [eax]
cmp edx, ecx
jne 0x40643f
mov edx, dword [eax + 4]
mov ecx, dword [esp + 0x38]
cmp edx, ecx
jne 0x40643f
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x50]
cmp eax, ecx
jne 0x40643f
mov ecx, dword [esp + 0x1c]
xor eax, eax
test ecx, ecx
jle 0x406422
mov ecx, dword [esp + 0x24]
sub ecx, ebp
lea edi, [ecx + 0xc]
lea esi, [eax + ebp]
mov dl, al
add dl, 0x55
mov cl, byte [edi + esi]
xor cl, dl
mov dl, byte [esi]
cmp cl, dl
jne 0x406422
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
mov dl, al
mov cl, byte [eax + ecx + 0x14]
add dl, 0x77
xor cl, dl
mov edx, eax
sub edx, esi
add edx, dword [esp + 0x20]
cmp cl, byte [edx + ebp]
jne 0x406426
inc eax
cmp eax, esi
jl 0x4063e8
jmp 0x406426
mov esi, dword [esp + 0x1c]
cmp eax, esi
jne 0x406432
add dword [esp + 0x4c], 0xffff
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x4c]
inc eax
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0x10]
mov cl, byte [esp + 0x14]
mov eax, 1
mov esi, dword [esp + 0x30]
dec esi
mov dword [esp + 0x30], esi
je 0x406467
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x406359
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x4062cf
cmp eax, 1
je 0x40649e
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x40649e
shl eax, 1
cmp eax, 0x100
jl 0x406488
mov esi, dword [esp + 0x18]
xor edx, edx
mov dx, word [esi + ecx*2]
mov byte [edx + ebx], al
mov esi, dword [esp + 0x10]
mov al, byte [esp + 0x54]
xor edi, edi
xor ebp, ebp
test esi, esi
mov byte [esp + 0x4c], al
jbe 0x406567
jmp 0x4064bc
mov al, byte [esp + 0x4c]
mov ecx, dword [esp + 0x2c]
test ecx, ecx
mov ecx, ebp
jne 0x4064d6
and ecx, 0xffff
mov dl, byte [ebx + ecx]
xor dl, al
mov byte [ebx + ecx], dl
jmp 0x406504
mov eax, dword [esp + 0x4c]
mov esi, 0xa
and eax, 0xff
and ecx, 0xffff
cdq
idiv esi
xor eax, eax
mov al, byte [ebx + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv esi
mov al, byte [esp + 0x4c]
add dl, 0x30
mov byte [ebx + ecx], dl
add al, dl
xor esi, esi
test ecx, ecx
mov byte [esp + 0x4c], al
mov dword [esp + 0x50], esi
jbe 0x406549
mov eax, 1
cmp ecx, eax
jbe 0x406540
xor edx, edx
mov dl, byte [esi + ebx]
mov esi, edx
xor edx, edx
mov dl, byte [eax + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
mov ebx, dword [esp + 0x28]
add edi, edx
inc eax
cmp eax, ecx
jb 0x406524
mov esi, dword [esp + 0x50]
inc esi
cmp esi, ecx
mov dword [esp + 0x50], esi
jb 0x406514
mov al, byte [ebx + ecx]
xor al, 0x6a
inc ebp
mov byte [ebx + ecx], al
mov ecx, dword [esp + 0x10]
mov eax, ebp
and eax, 0xffff
cmp eax, ecx
jb 0x4064b8
mov esi, ecx
xor edx, edx
test esi, esi
jbe 0x40659a
xor ecx, ecx
mov ebp, dword [esp + 0x18]
xor eax, eax
mov ax, word [ebp + ecx*2]
mov ebp, dword [esp + 0x48]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + ebp], al
and eax, 0xff
add edi, eax
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, esi
jb 0x40656f
cmp dword [0x4271b0], edi
je 0x4065b2
mov dword [0x4271b0], edi
mov dword [0x4271ac], 1
push ebx
call fcn.004190ca
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.004190ca
mov edx, dword [0x427550]
add esp, 8
mov eax, esi
mov dword [esp + 0x14], eax
mov ebp, eax
cmp dword [edx + 8], 3
jne 0x406651
lea esi, [ebp - 1]
xor cl, cl
xor eax, eax
test esi, esi
jle 0x406600
mov edx, dword [esp + 0x48]
mov bl, cl
shr bl, 7
mov dl, byte [eax + edx]
xor dl, al
xor dl, 0x6a
add dl, bl
shl cl, 1
add cl, dl
inc eax
cmp eax, esi
jl 0x4065e4
mov esi, dword [esp + 0x48]
mov dl, byte [esi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x406625
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x34
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 0x40662c
jmp 0x4066e9
mov edi, dword [esp + 0x48]
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 0x406659
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 0x406680
and ecx, 0x7fffff
cmp esi, ecx
je 0x4066c0
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x34
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 0x4066c7
xor dl, dl
xor ecx, ecx
mov byte [esp + 0x4c], dl
mov edi, dword [esp + 0x48]
shr dl, 7
mov bl, byte [ecx + edi]
xor bl, cl
xor bl, 0x6a
add bl, dl
mov dl, byte [esp + 0x4c]
shl dl, 1
add dl, bl
inc ecx
cmp ecx, 5
mov byte [esp + 0x4c], dl
jl 0x4066f1
mov ecx, dword [0x427550]
cmp dl, byte [ecx + 0x1d]
je 0x406733
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
mov dword [0x427214], esi
jmp 0x407346
cmp ebp, 8
jl 0x40739a
lea edx, [ebp - 7]
push edx
call fcn.00418c70
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x10], ebx
je 0x40739a
mov eax, dword [esp + 0x50]
lea ecx, [ebp - 8]
mov edx, ecx
mov edi, ebx
lea esi, [eax + 3]
mov eax, dword [esp + 0x54]
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
test eax, eax
mov eax, dword [0x427550]
mov bp, word [eax]
je 0x406d64
mov cl, byte [eax + 0x53]
mov dx, word [eax + 0x1e]
shr ebp, 0xb
mov byte [esp + 0x50], cl
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
mov word [esp + 0x40], dx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x1c], edx
je 0x4067df
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x4067fe
cmp al, 0x5a
jg 0x4067fe
cmp al, 0x38
jle 0x4067d3
cmp al, 0x41
jl 0x4067fe
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x4067c0
movsx eax, byte [ebx + 1]
lea ecx, [eax + eax*2]
lea edx, [eax + ecx*4]
movsx eax, byte [ebx]
lea edi, [eax + edx*2 - 0x6db]
mov edx, dword [esp + 0x4c]
cmp edi, edx
lea eax, [ebx + 2]
jbe 0x406805
xor eax, eax
jmp 0x407331
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x406849
mov ebx, dword [esp + 0x4c]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x40683f
mov edx, 5
shl ecx, 1
cmp ecx, 0x100
jl 0x406832
inc eax
mov ecx, 1
dec edx
je 0x40683b
cmp eax, ebx
jae 0x40683f
jmp 0x406822
cmp eax, ebx
jb 0x406816
cmp ecx, 1
je 0x406849
cmp eax, ebx
jae 0x406849
inc eax
cmp edi, eax
mov dword [esp + 0x54], eax
jae 0x406855
mov dword [esp + 0x54], edi
mov ecx, dword [esp + 0x54]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406866
mov dword [esp + 0x54], eax
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
xor edx, edx
shr ebx, 2
mov dword [esp + 0x34], edx
mov dword [esp + 0x4c], ebx
je 0x4068c2
mov esi, ebx
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 0x40687f
mov dword [esp + 0x34], edx
mov edi, dword [esp + 0x1c]
and edi, 3
mov dword [esp + 0x38], edi
jbe 0x4068eb
mov ecx, edi
mov esi, edx
shr esi, 0x1f
lea esi, [esi + edx*2]
xor edx, edx
mov dl, byte [eax]
add edx, esi
inc eax
dec ecx
jne 0x4068d1
mov edi, dword [esp + 0x38]
mov dword [esp + 0x34], edx
push 0x53c
call fcn.004190d5
mov esi, eax
push 0x29e
mov dword [esp + 0x20], esi
call fcn.004190d5
add esp, 8
mov dword [esp + 0x14], eax
test ebp, ebp
mov word [esi], 0
jne 0x40697d
movzx bp, byte [esp + 0x50]
mov ecx, 1
cmp word [esp + 0x54], cx
jbe 0x4069f8
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x40]
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 + 0x18]
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 + 0x54]
jb 0x40693e
mov ebx, dword [esp + 0x4c]
jmp 0x4069f4
mov al, byte [esp + 0x50]
mov cl, 1
mov byte [esp + 0x4c], al
mov al, byte [esp + 0x54]
cmp al, cl
jbe 0x4069f8
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x40]
and ebp, 0xff
mov esi, 1
lea edi, [edx + 2]
mov edx, dword [esp + 0x4c]
lea eax, [esi + ebp]
and edx, 0xff
add edi, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x4c]
mov byte [esp + 0x40], dl
xor dl, cl
add al, dl
mov edx, dword [esp + 0x18]
mov byte [esp + 0x4c], al
mov eax, dword [esp + 0x40]
and eax, 0xff
lea eax, [edx + eax*2]
mov dx, word [eax]
mov word [edi - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x54]
inc esi
cmp cl, al
jb 0x4069a5
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
xor ebp, ebp
xor edx, edx
cmp ebx, ebp
mov dword [esp + 0x38], edx
lea eax, [eax + ecx - 1]
jbe 0x406a55
mov esi, ebx
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 0x406a12
mov dword [esp + 0x38], edx
cmp edi, ebp
jbe 0x406a71
mov ecx, edi
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 0x406a5b
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x427644]
xor edi, edi
mov dword [esp + 0x30], ebp
mov ecx, dword [esi*4 + 0x4272d0]
lea eax, [edx + 2]
mov dword [esp + 0x40], eax
cmp ecx, ebp
mov dword [esp + 0x3c], ebp
mov eax, 1
je 0x406ae7
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x4c], dl
je 0x406ac1
mov edx, dword [esp + 0x4c]
and edx, 0xff
lea ebx, [edx - 1]
cmp ebx, esi
je 0x406ac1
cmp edx, dword [0x427640]
jle 0x406ae7
mov edx, dword [ecx]
lea ebp, [ecx + 5]
mov ecx, dword [0x427550]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x20], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x406ae7
mov dword [esp + 0x20], 8
mov edx, dword [esp + 0x54]
test edx, edx
jbe 0x406c68
mov esi, dword [esp + 0x40]
mov cl, byte [esi]
inc esi
test cl, cl
mov dword [esp + 0x40], esi
je 0x406c3d
cmp cl, 0x37
jne 0x406b12
mov cl, 0x49
add cl, 0xc5
jmp 0x406b2b
cmp cl, 0x38
jne 0x406b1e
mov cl, 0x4f
add cl, 0xc5
jmp 0x406b2b
cmp cl, 0x41
jb 0x406b28
add cl, 0xc5
jmp 0x406b2b
add cl, 0xcf
mov dword [esp + 0x2c], 5
shl eax, 1
test cl, 1
je 0x406b3c
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x4c], cl
jl 0x406c12
mov ebx, dword [esp + 0x18]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebx + edx*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x24], edi
mov byte [esi + edx], al
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x3c]
jae 0x406c09
test ebp, ebp
je 0x406c09
mov edx, dword [ebp]
mov eax, dword [esp + 0x1c]
cmp edx, eax
jne 0x406c09
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x34]
cmp eax, edx
jne 0x406c09
mov edx, dword [ebp + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x406c09
mov edx, dword [esp + 0x20]
xor eax, eax
test edx, edx
jle 0x406bf9
mov ecx, dword [esp + 0x10]
mov edx, ebp
sub edx, ecx
lea edi, [edx + 0xc]
lea esi, [eax + ecx]
mov dl, al
add dl, 0x55
mov bl, byte [esi + edi]
xor bl, dl
mov dl, byte [esi]
cmp bl, dl
jne 0x406bf1
mov bl, byte [eax + ebp + 0x14]
mov esi, dword [esp + 0x20]
mov dl, al
add dl, 0x77
xor bl, dl
mov edx, eax
sub edx, esi
mov esi, dword [esp + 0x1c]
add edx, esi
cmp bl, byte [edx + ecx]
jne 0x406bf1
mov edx, dword [esp + 0x20]
inc eax
cmp eax, edx
jl 0x406bb7
mov edi, dword [esp + 0x24]
mov cl, byte [esp + 0x4c]
cmp eax, dword [esp + 0x20]
jne 0x406c05
add edi, 0xffff
inc dword [esp + 0x30]
mov edx, dword [esp + 0x54]
mov eax, 1
mov esi, dword [esp + 0x2c]
dec esi
mov dword [esp + 0x2c], esi
je 0x406c2d
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x406b33
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x406af3
cmp eax, 1
je 0x406c68
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x406c68
shl eax, 1
cmp eax, 0x100
jl 0x406c4e
mov esi, dword [esp + 0x18]
xor edx, edx
mov dx, word [esi + ecx*2]
mov ecx, dword [esp + 0x14]
mov byte [edx + ecx], al
mov eax, dword [esp + 0x54]
mov dl, byte [esp + 0x50]
xor edi, edi
cmp eax, edi
mov dword [esp + 0x24], edi
jbe 0x406cec
xor eax, eax
mov ecx, dword [esp + 0x14]
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 + 0x4c], dl
jbe 0x406cc9
mov ecx, 1
cmp eax, ecx
jbe 0x406cc4
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 [ecx + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc ecx
cmp ecx, eax
jb 0x406ca8
mov dl, byte [esp + 0x4c]
inc ebp
cmp ebp, eax
jb 0x406c94
mov ecx, dword [esp + 0x14]
mov bl, byte [eax + ecx]
xor bl, 0x6a
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x54]
inc eax
mov dword [esp + 0x24], eax
and eax, 0xffff
cmp eax, ecx
jb 0x406c7c
mov eax, dword [esp + 0x54]
xor edx, edx
test eax, eax
jbe 0x406d2c
mov esi, dword [esp + 0x48]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
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 + 0x54]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x406d04
jmp 0x406d34
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
cmp dword [0x4271b0], edi
je 0x406d4c
mov dword [0x4271b0], edi
mov dword [0x4271ac], 1
push ebp
call fcn.004190ca
push ebx
call fcn.004190ca
mov eax, dword [esp + 0x5c]
add esp, 8
jmp 0x40732d
mov cl, byte [eax + 0x54]
mov dx, word [eax + 0x34]
shr ebp, 0xb
mov byte [esp + 0x50], cl
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
mov word [esp + 0x40], dx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x24], edx
je 0x406daf
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406dce
cmp al, 0x5a
jg 0x406dce
cmp al, 0x38
jle 0x406da3
cmp al, 0x41
jl 0x406dce
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x406d90
movsx eax, byte [ebx + 1]
lea ecx, [eax + eax*2]
lea edx, [eax + ecx*4]
mov ecx, dword [esp + 0x4c]
movsx eax, byte [ebx]
lea edi, [eax + edx*2 - 0x6db]
lea eax, [ebx + 2]
cmp edi, ecx
jbe 0x406dd5
xor eax, eax
jmp 0x407331
mov ebx, dword [esp + 0x4c]
mov esi, eax
xor eax, eax
mov ecx, 1
test ebx, ebx
jbe 0x406e19
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406e0f
mov edx, 5
shl ecx, 1
cmp ecx, 0x100
jl 0x406e02
inc eax
mov ecx, 1
dec edx
je 0x406e0b
cmp eax, ebx
jae 0x406e0f
jmp 0x406df2
cmp eax, ebx
jb 0x406de6
cmp ecx, 1
je 0x406e19
cmp eax, ebx
jae 0x406e19
inc eax
cmp edi, eax
mov dword [esp + 0x54], eax
jae 0x406e25
mov dword [esp + 0x54], edi
mov ecx, dword [esp + 0x54]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406e36
mov dword [esp + 0x54], eax
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
xor edx, edx
shr ebx, 2
mov dword [esp + 0x34], edx
mov dword [esp + 0x4c], ebx
je 0x406e92
mov esi, ebx
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 0x406e4f
mov dword [esp + 0x34], edx
mov edi, dword [esp + 0x24]
and edi, 3
mov dword [esp + 0x38], edi
jbe 0x406ebb
mov ecx, edi
mov esi, edx
shr esi, 0x1f
lea esi, [esi + edx*2]
xor edx, edx
mov dl, byte [eax]
add edx, esi
inc eax
dec ecx
jne 0x406ea1
mov edi, dword [esp + 0x38]
mov dword [esp + 0x34], edx
push 0x53c
call fcn.004190d5
mov esi, eax
push 0x29e
mov dword [esp + 0x1c], esi
call fcn.004190d5
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [esi], 0
jne 0x406f4d
movzx bp, byte [esp + 0x50]
mov ecx, 1
cmp word [esp + 0x54], cx
jbe 0x406fc8
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x40]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [esi + ebx]
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 + 0x14]
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 + 0x54]
jb 0x406f0e
mov ebx, dword [esp + 0x4c]
jmp 0x406fc4
mov al, byte [esp + 0x50]
mov cl, 1
mov byte [esp + 0x4c], al
mov al, byte [esp + 0x54]
cmp al, cl
jbe 0x406fc8
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
and ebp, 0xff
mov esi, 1
lea edi, [edx + 2]
mov edx, dword [esp + 0x4c]
lea eax, [esi + ebp]
and edx, 0xff
add edi, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x4c]
mov byte [esp + 0x40], dl
xor dl, cl
add al, dl
mov edx, dword [esp + 0x14]
mov byte [esp + 0x4c], al
mov eax, dword [esp + 0x40]
and eax, 0xff
lea eax, [edx + eax*2]
mov dx, word [eax]
mov word [edi - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x54]
inc esi
cmp cl, al
jb 0x406f75
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
xor ebp, ebp
xor edx, edx
cmp ebx, ebp
mov dword [esp + 0x38], edx
lea eax, [eax + ecx - 1]
jbe 0x407025
mov esi, ebx
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 0x406fe2
mov dword [esp + 0x38], edx
cmp edi, ebp
jbe 0x407041
mov ecx, edi
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 0x40702b
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x427644]
xor edi, edi
mov dword [esp + 0x30], ebp
mov ecx, dword [esi*4 + 0x4272d0]
lea eax, [edx + 2]
mov dword [esp + 0x40], eax
cmp ecx, ebp
mov dword [esp + 0x3c], ebp
mov eax, 1
je 0x4070b7
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x4c], dl
je 0x407091
mov edx, dword [esp + 0x4c]
and edx, 0xff
lea ebx, [edx - 1]
cmp ebx, esi
je 0x407091
cmp edx, dword [0x427640]
jle 0x4070b7
mov edx, dword [ecx]
lea ebp, [ecx + 5]
mov ecx, dword [0x427550]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x20], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x4070b7
mov dword [esp + 0x20], 8
mov edx, dword [esp + 0x54]
test edx, edx
jbe 0x407238
mov esi, dword [esp + 0x40]
mov cl, byte [esi]
inc esi
test cl, cl
mov dword [esp + 0x40], esi
je 0x40720d
cmp cl, 0x37
jne 0x4070e2
mov cl, 0x49
add cl, 0xc5
jmp 0x4070fb
cmp cl, 0x38
jne 0x4070ee
mov cl, 0x4f
add cl, 0xc5
jmp 0x4070fb
cmp cl, 0x41
jb 0x4070f8
add cl, 0xc5
jmp 0x4070fb
add cl, 0xcf
mov dword [esp + 0x2c], 5
shl eax, 1
test cl, 1
je 0x40710c
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x4c], cl
jl 0x4071e2
mov ebx, dword [esp + 0x14]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebx + edx*2]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x1c], edi
mov byte [esi + edx], al
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x3c]
jae 0x4071d9
test ebp, ebp
je 0x4071d9
mov edx, dword [ebp]
mov eax, dword [esp + 0x24]
cmp edx, eax
jne 0x4071d9
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x34]
cmp eax, edx
jne 0x4071d9
mov edx, dword [ebp + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x4071d9
mov edx, dword [esp + 0x20]
xor eax, eax
test edx, edx
jle 0x4071c9
mov ecx, dword [esp + 0x10]
mov edx, ebp
sub edx, ecx
lea edi, [edx + 0xc]
lea esi, [eax + ecx]
mov dl, al
add dl, 0x55
mov bl, byte [edi + esi]
xor bl, dl
mov dl, byte [esi]
cmp bl, dl
jne 0x4071c1
mov bl, byte [eax + ebp + 0x14]
mov esi, dword [esp + 0x20]
mov dl, al
add dl, 0x77
xor bl, dl
mov edx, eax
sub edx, esi
mov esi, dword [esp + 0x24]
add edx, esi
cmp bl, byte [edx + ecx]
jne 0x4071c1
mov edx, dword [esp + 0x20]
inc eax
cmp eax, edx
jl 0x407187
mov edi, dword [esp + 0x1c]
mov cl, byte [esp + 0x4c]
cmp eax, dword [esp + 0x20]
jne 0x4071d5
add edi, 0xffff
inc dword [esp + 0x30]
mov edx, dword [esp + 0x54]
mov eax, 1
mov esi, dword [esp + 0x2c]
dec esi
mov dword [esp + 0x2c], esi
je 0x4071fd
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x407103
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x4070c3
cmp eax, 1
je 0x407238
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x407238
shl eax, 1
cmp eax, 0x100
jl 0x40721e
mov esi, dword [esp + 0x14]
xor edx, edx
mov dx, word [esi + ecx*2]
mov ecx, dword [esp + 0x18]
mov byte [edx + ecx], al
mov eax, dword [esp + 0x54]
mov dl, byte [esp + 0x50]
xor edi, edi
cmp eax, edi
mov dword [esp + 0x1c], edi
jbe 0x4072bc
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 + 0x4c], dl
jbe 0x407299
mov ecx, 1
cmp eax, ecx
jbe 0x407294
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 0x407278
mov dl, byte [esp + 0x4c]
inc ebp
cmp ebp, eax
jb 0x407264
mov ecx, dword [esp + 0x18]
mov bl, byte [eax + ecx]
xor bl, 0x6a
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x54]
inc eax
mov dword [esp + 0x1c], eax
and eax, 0xffff
cmp eax, ecx
jb 0x40724c
mov ebp, dword [esp + 0x54]
xor edx, edx
test ebp, ebp
jbe 0x4072fc
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
xor ecx, ecx
mov ebp, dword [esp + 0x48]
xor eax, eax
mov ax, word [esi + ecx*2]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + ebp], al
mov ebp, dword [esp + 0x54]
and eax, 0xff
add edi, eax
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, ebp
jb 0x4072d0
jmp 0x407304
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
cmp dword [0x4271b0], edi
je 0x40731c
mov dword [0x4271b0], edi
mov dword [0x4271ac], 1
push ebx
call fcn.004190ca
push esi
call fcn.004190ca
add esp, 8
mov eax, ebp
mov ebx, dword [esp + 0x10]
push ebx
mov dword [esp + 0x18], eax
call fcn.00418dd3
mov eax, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
add esp, 4
test ebp, ebp
je 0x40739a
mov ecx, dword [0x427550]
mov edx, dword [ecx + 8]
test edx, edx
je 0x40739a
mov edx, dword [0x427214]
mov esi, eax
xor edi, edi
mov byte [edx], 8
mov eax, esi
xor edx, edx
mov ecx, 0xa
div ecx
mov eax, 0xcccccccd
mov ecx, edx
mul esi
shr edx, 3
mov esi, edx
mov edx, dword [0x427214]
add cl, 0x30
sub edx, edi
inc edi
cmp edi, 8
mov byte [edx + 8], cl
jl 0x407364
mov eax, dword [0x427214]
mov byte [eax + 9], 0
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret