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

Disassembly:
sub esp, 0x10
mov ecx, dword [esp + 0x18]
push ebx
push ebp
push esi
mov edx, ecx
push edi
mov edi, dword [esp + 0x24]
xor eax, eax
shr ecx, 2
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x10], 0
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [0x4299d8]
not ecx
mov eax, dword [eax + 8]
dec ecx
test eax, eax
mov ebx, ecx
je 0x4064e4
cmp eax, 2
jbe 0x406cbf
cmp eax, 4
ja 0x406cbf
cmp ebx, 0x10
jl 0x406cbf
cmp ebx, 0x18
jg 0x406cbf
mov ecx, dword [esp + 0x30]
mov edi, ebp
test ecx, ecx
je 0x405fc3
xor ecx, ecx
cmp eax, 4
mov eax, dword [0x4299d8]
sete cl
mov dl, byte [eax + 0x53]
mov ax, word [eax + 0x1c]
mov esi, ecx
mov word [esp + 0x18], ax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
mov byte [esp + 0x30], dl
dec ecx
mov dword [esp + 0x14], esi
mov edx, eax
je 0x405c75
mov al, byte [eax + ebp]
cmp al, 0x30
jl 0x405c8b
cmp al, 0x5a
jg 0x405c8b
test esi, esi
je 0x405c61
cmp al, 0x39
jg 0x405c8b
jmp 0x405c69
cmp al, 0x38
jle 0x405c69
cmp al, 0x41
jl 0x405c8b
inc edx
mov eax, edx
and eax, 0xffff
cmp eax, ecx
jb 0x405c4c
mov eax, dword [esp + 0x28]
xor ebx, ebx
test esi, esi
setne bl
lea ebx, [ebx*8 + 0xc]
cmp ebx, eax
jbe 0x405c92
xor eax, eax
jmp 0x406373
mov edi, ebx
test esi, esi
mov dword [esp + 0x10], edi
jne 0x405d01
mov edi, dword [esp + 0x28]
xor eax, eax
test edi, edi
mov esi, ebp
mov ecx, 1
jbe 0x405ce0
mov dl, byte [esi]
inc esi
test dl, dl
je 0x405cd6
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x405cc9
inc eax
mov ecx, 1
dec edx
je 0x405cd2
cmp eax, edi
jb 0x405cb9
jmp 0x405cd6
cmp eax, edi
jb 0x405cad
cmp ecx, 1
je 0x405ce0
cmp eax, edi
jae 0x405ce0
inc eax
mov edi, eax
cmp ebx, eax
mov dword [esp + 0x10], edi
jae 0x405cf0
mov edi, ebx
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x405d01
mov edi, 0x29e
mov dword [esp + 0x10], edi
push 0x53c
call fcn.00419545
mov ebp, eax
push 0x29e
mov dword [esp + 0x30], ebp
call fcn.00419545
movzx bx, byte [esp + 0x38]
mov ecx, 1
add esp, 8
cmp di, cx
mov esi, eax
mov word [ebp], 0
jbe 0x405d90
mov eax, dword [esp + 0x18]
mov edx, ebp
and eax, 0xffff
mov edi, ecx
mov dword [esp + 0x18], eax
lea ebp, [edx + 2]
jmp 0x405d50
mov eax, dword [esp + 0x18]
mov edx, ebx
add eax, edi
and edx, 0xffff
add ebp, 2
xor eax, edx
cdq
idiv edi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebx, eax
mov eax, dword [esp + 0x28]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [ebp - 2], dx
mov word [eax], cx
inc ecx
inc edi
cmp cx, word [esp + 0x10]
jb 0x405d4c
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x2c]
xor ecx, ecx
test edi, edi
mov eax, 1
jbe 0x405e9e
jmp 0x405da9
mov ebx, dword [esp + 0x18]
mov dl, byte [ebx]
inc ebx
test dl, dl
mov byte [esp + 0x1c], dl
mov dword [esp + 0x18], ebx
je 0x405e7c
mov ebx, dword [esp + 0x14]
test ebx, ebx
jne 0x405e0b
cmp dl, 0x37
jne 0x405dd8
mov dl, 0x49
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x405e1f
cmp dl, 0x38
jne 0x405dec
mov dl, 0x4f
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x405e1f
cmp dl, 0x41
jb 0x405dfe
add dl, 0xc5
mov dword [esp + 0x2c], 5
jmp 0x405e1f
add dl, 0xcf
mov dword [esp + 0x2c], 5
jmp 0x405e1f
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], 1
and eax, 0xff
or ah, 1
mov ebx, dword [esp + 0x14]
test ebx, ebx
jne 0x405e32
add eax, eax
test dl, 1
je 0x405e30
or al, 1
shr dl, 1
cmp eax, 0x100
jl 0x405e55
mov edi, ecx
xor ebx, ebx
and edi, 0xffff
inc ecx
mov bx, word [ebp + edi*2]
mov edi, dword [esp + 0x10]
mov byte [ebx + esi], al
mov eax, 1
mov ebx, dword [esp + 0x2c]
dec ebx
mov dword [esp + 0x2c], ebx
je 0x405e6c
mov ebx, ecx
and ebx, 0xffff
cmp ebx, edi
jb 0x405e1f
mov edx, ecx
and edx, 0xffff
cmp edx, edi
jb 0x405da5
cmp eax, 1
je 0x405e9e
and ecx, 0xffff
cmp ecx, edi
jae 0x405e9e
add eax, eax
cmp eax, 0x100
jl 0x405e8b
xor edx, edx
mov dx, word [ebp + ecx*2]
mov byte [edx + esi], al
mov eax, dword [esp + 0x10]
mov bl, byte [esp + 0x30]
xor ecx, ecx
xor ebp, ebp
cmp eax, ecx
mov dword [esp + 0x18], ecx
mov byte [esp + 0x2c], bl
jbe 0x405f5c
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x405ed0
mov dl, byte [esi + ecx]
xor dl, bl
mov al, dl
mov byte [esi + ecx], dl
add bl, al
jmp 0x405ef6
mov eax, dword [esp + 0x2c]
mov edi, 0xa
and eax, 0xff
cdq
idiv edi
xor eax, eax
mov al, byte [esi + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv edi
add dl, 0x30
mov byte [esi + ecx], dl
add bl, dl
xor edi, edi
mov byte [esp + 0x2c], bl
test ecx, ecx
mov dword [esp + 0x30], edi
jbe 0x405f39
mov eax, 1
cmp ecx, eax
jbe 0x405f2c
xor edx, edx
mov dl, byte [edi + esi]
mov edi, edx
xor edx, edx
mov ebx, edi
mov dl, byte [eax + esi]
shr edx, 1
shr ebx, 1
xor edx, ebx
add ebp, edx
inc eax
cmp eax, ecx
jb 0x405f14
mov edi, dword [esp + 0x30]
inc edi
cmp edi, ecx
mov dword [esp + 0x30], edi
jb 0x405f04
mov bl, byte [esp + 0x2c]
mov al, byte [esi + ecx]
xor al, 0x6a
mov byte [esi + ecx], al
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x18], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x405eba
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
xor edx, edx
test eax, eax
jbe 0x405f96
xor ecx, ecx
mov ebx, dword [esp + 0x24]
xor eax, eax
mov ax, word [edi + ecx*2]
mov al, byte [eax + esi]
xor al, dl
mov byte [ecx + ebx], al
and eax, 0xff
add ebp, eax
mov eax, dword [esp + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x405f6c
cmp dword [0x429670], ebp
je 0x405fae
mov dword [0x429670], ebp
mov dword [0x42966c], 1
push esi
call fcn.0041953a
push edi
call fcn.0041953a
mov eax, dword [esp + 0x18]
jmp 0x406370
xor ecx, ecx
cmp eax, 4
mov eax, dword [0x4299d8]
sete cl
mov dl, byte [eax + 0x54]
mov ax, word [eax + 0x34]
mov esi, ecx
mov word [esp + 0x1c], ax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
mov byte [esp + 0x30], dl
dec ecx
mov dword [esp + 0x14], esi
mov edx, eax
je 0x40602d
mov al, byte [eax + ebp]
cmp al, 0x30
jl 0x405c8b
cmp al, 0x5a
jg 0x405c8b
test esi, esi
je 0x406015
cmp al, 0x39
jg 0x405c8b
jmp 0x406021
cmp al, 0x38
jle 0x406021
cmp al, 0x41
jl 0x405c8b
inc edx
mov eax, edx
and eax, 0xffff
cmp eax, ecx
jb 0x405ff4
mov eax, dword [esp + 0x28]
xor ebx, ebx
test esi, esi
setne bl
lea ebx, [ebx*8 + 0xc]
cmp ebx, eax
jbe 0x40604a
xor eax, eax
jmp 0x406373
mov edi, ebx
test esi, esi
mov dword [esp + 0x10], edi
jne 0x4060bb
mov edx, dword [esp + 0x28]
xor eax, eax
test edx, edx
mov esi, ebp
mov ecx, 1
jbe 0x40609a
mov edi, edx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406090
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406083
inc eax
mov ecx, 1
dec edx
je 0x40608c
cmp eax, edi
jb 0x406073
jmp 0x406090
cmp eax, edi
jb 0x406067
cmp ecx, 1
je 0x40609a
cmp eax, edi
jae 0x40609a
inc eax
mov edi, eax
cmp ebx, eax
mov dword [esp + 0x10], edi
jae 0x4060aa
mov edi, ebx
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x4060bb
mov edi, 0x29e
mov dword [esp + 0x10], edi
push 0x53c
call fcn.00419545
mov ebx, eax
push 0x29e
mov dword [esp + 0x30], ebx
call fcn.00419545
mov ecx, 1
add esp, 8
mov word [ebx], 0
cmp di, cx
movzx bx, byte [esp + 0x30]
mov esi, eax
jbe 0x406143
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
and eax, 0xffff
mov edi, ecx
mov dword [esp + 0x1c], eax
lea ebp, [edx + 2]
jmp 0x40610b
mov eax, dword [esp + 0x1c]
mov edx, ebx
add eax, edi
and edx, 0xffff
add ebp, 2
xor eax, edx
cdq
idiv edi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebx, eax
mov eax, dword [esp + 0x28]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [ebp - 2], dx
mov word [eax], cx
inc ecx
inc edi
cmp cx, word [esp + 0x10]
jb 0x406107
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
xor ecx, ecx
test ebx, ebx
mov eax, 1
jbe 0x406258
jmp 0x406164
mov ebp, dword [esp + 0x1c]
mov dl, byte [ebp]
inc ebp
test dl, dl
mov byte [esp + 0x18], dl
mov dword [esp + 0x1c], ebp
je 0x406237
mov ebp, dword [esp + 0x14]
test ebp, ebp
jne 0x4061c7
cmp dl, 0x37
jne 0x406194
mov dl, 0x49
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x4061db
cmp dl, 0x38
jne 0x4061a8
mov dl, 0x4f
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x4061db
cmp dl, 0x41
jb 0x4061ba
add dl, 0xc5
mov dword [esp + 0x2c], 5
jmp 0x4061db
add dl, 0xcf
mov dword [esp + 0x2c], 5
jmp 0x4061db
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], 1
and eax, 0xff
or ah, 1
mov ebp, dword [esp + 0x14]
test ebp, ebp
jne 0x4061ee
add eax, eax
test dl, 1
je 0x4061ec
or al, 1
shr dl, 1
cmp eax, 0x100
jl 0x406210
mov ebx, ecx
xor ebp, ebp
and ebx, 0xffff
inc ecx
mov bp, word [edi + ebx*2]
mov ebx, dword [esp + 0x10]
mov byte [esi + ebp], al
mov eax, 1
mov ebp, dword [esp + 0x2c]
dec ebp
mov dword [esp + 0x2c], ebp
je 0x406227
mov ebp, ecx
and ebp, 0xffff
cmp ebp, ebx
jb 0x4061db
mov edx, ecx
and edx, 0xffff
cmp edx, ebx
jb 0x406160
cmp eax, 1
je 0x406258
and ecx, 0xffff
cmp ecx, ebx
jae 0x406258
add eax, eax
cmp eax, 0x100
jl 0x406246
xor edx, edx
mov dx, word [edi + ecx*2]
mov byte [edx + esi], al
mov al, byte [esp + 0x30]
xor ecx, ecx
xor ebp, ebp
cmp ebx, ecx
mov dword [esp + 0x18], ecx
mov byte [esp + 0x2c], al
jbe 0x406318
jmp 0x406276
mov al, byte [esp + 0x2c]
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x406288
mov dl, byte [esi + ecx]
xor dl, al
mov byte [esi + ecx], dl
jmp 0x4062b0
mov eax, dword [esp + 0x2c]
mov edi, 0xa
and eax, 0xff
cdq
idiv edi
xor eax, eax
mov al, byte [esi + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv edi
mov al, byte [esp + 0x2c]
add dl, 0x30
mov byte [esi + ecx], dl
add al, dl
xor edi, edi
test ecx, ecx
mov byte [esp + 0x2c], al
mov dword [esp + 0x30], edi
jbe 0x4062f5
mov eax, 1
cmp ecx, eax
jbe 0x4062ec
xor edx, edx
mov dl, byte [edi + esi]
mov edi, edx
xor edx, edx
mov ebx, edi
mov dl, byte [eax + esi]
shr edx, 1
shr ebx, 1
xor edx, ebx
add ebp, edx
inc eax
cmp eax, ecx
jb 0x4062d0
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x10]
inc edi
cmp edi, ecx
mov dword [esp + 0x30], edi
jb 0x4062c0
mov al, byte [esi + ecx]
xor al, 0x6a
mov byte [esi + ecx], al
mov ecx, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x18], ecx
and ecx, 0xffff
cmp ecx, ebx
jb 0x406272
mov edi, dword [esp + 0x28]
xor edx, edx
test ebx, ebx
jbe 0x40634a
xor ecx, ecx
xor eax, eax
mov ax, word [edi + ecx*2]
mov edi, dword [esp + 0x24]
mov al, byte [eax + esi]
xor al, dl
mov byte [ecx + edi], al
and eax, 0xff
add ebp, eax
mov edi, dword [esp + 0x28]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, ebx
jb 0x406320
cmp dword [0x429670], ebp
je 0x406362
mov dword [0x429670], ebp
mov dword [0x42966c], 1
push esi
call fcn.0041953a
push edi
call fcn.0041953a
mov eax, ebx
add esp, 8
mov ecx, dword [0x4299d8]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x10], eax
cmp dword [ecx + 8], 3
jne 0x4063ff
mov ebp, dword [esp + 0x10]
xor cl, cl
xor eax, eax
lea esi, [ebp - 1]
test esi, esi
jle 0x4063ae
mov dl, byte [eax + edi]
mov bl, cl
xor dl, al
add cl, cl
xor dl, 0x6a
shr bl, 7
add dl, bl
add cl, dl
inc eax
cmp eax, esi
jl 0x406396
mov dl, byte [edi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x4063cf
pop edi
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
pop esi
pop ebp
pop ebx
add esp, 0x10
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
xor edx, ebx
xor edx, 0x6a
shl eax, 5
add eax, edx
inc ecx
cmp ecx, 6
jl 0x4063d6
mov edi, dword [esp + 0x24]
jmp 0x406493
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 0x406403
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 0x40642a
and ecx, 0x7fffff
cmp esi, ecx
je 0x40646a
pop edi
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
pop esi
pop ebp
pop ebx
add esp, 0x10
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 0x406471
xor dl, dl
xor ecx, ecx
mov byte [esp + 0x28], dl
mov bl, byte [ecx + edi]
xor bl, cl
xor bl, 0x6a
shr dl, 7
add bl, dl
mov dl, byte [esp + 0x28]
add dl, dl
add dl, bl
inc ecx
cmp ecx, 5
mov byte [esp + 0x28], dl
jl 0x40649b
mov ecx, dword [0x4299d8]
cmp dl, byte [ecx + 0x1e]
je 0x4064d9
pop edi
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov dword [0x4296d8], esi
jmp 0x406c78
cmp ebx, 8
jl 0x406cbf
lea edx, [ebx - 7]
push edx
call fcn.004190e0
mov edx, eax
add esp, 4
test edx, edx
mov dword [esp + 0x14], edx
je 0x406cbf
lea ecx, [ebx - 8]
lea esi, [ebp + 3]
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x30]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [edx + ebx - 8], 0
mov esi, 0
test eax, eax
mov eax, dword [0x4299d8]
mov edi, edx
mov bp, word [eax]
je 0x4068d7
mov cl, byte [eax + 0x53]
mov ax, word [eax + 0x1c]
shr ebp, 0xb
mov byte [esp + 0x2c], cl
mov word [esp + 0x18], ax
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x40657e
mov al, byte [eax + edx]
cmp al, 0x30
jl 0x4065d4
cmp al, 0x5a
jg 0x4065d4
cmp al, 0x38
jle 0x406572
cmp al, 0x41
jl 0x4065d4
inc esi
mov eax, esi
and eax, 0xffff
cmp eax, ecx
jb 0x40655f
movsx eax, byte [edx + 1]
xor ebx, ebx
lea ecx, [eax + eax*2]
lea eax, [eax + ecx*4]
movsx ecx, byte [edx]
lea edi, [ecx + eax*2 - 0x6db]
mov ecx, dword [esp + 0x28]
cmp edi, ecx
lea eax, [edx + 2]
ja 0x4068ce
mov edx, ecx
mov esi, eax
test edx, edx
mov eax, 1
jbe 0x4065ed
mov cl, byte [esi]
inc esi
test cl, cl
je 0x4065e3
mov ecx, 5
add eax, eax
cmp eax, 0x100
jl 0x4065cb
inc ebx
mov eax, 1
dec ecx
je 0x4065df
cmp ebx, edx
jb 0x4065bc
jmp 0x4065e3
xor ebx, ebx
mov dword [esp + 0x10], ebx
jmp 0x406c6b
cmp ebx, edx
jb 0x4065b0
cmp eax, 1
je 0x4065ed
cmp ebx, edx
jae 0x4065ed
inc ebx
cmp edi, ebx
mov dword [esp + 0x30], ebx
jae 0x4065fb
mov dword [esp + 0x30], edi
mov ebx, edi
cmp ebx, 0x29e
jbe 0x40660f
mov dword [esp + 0x30], 0x29e
mov ebx, dword [esp + 0x30]
push 0x53c
call fcn.00419545
mov esi, eax
push 0x29e
mov dword [esp + 0x18], esi
call fcn.00419545
add esp, 8
mov edi, eax
test ebp, ebp
mov word [esi], 0
mov edx, esi
jne 0x4066c1
movzx bx, byte [esp + 0x2c]
mov ecx, 1
cmp word [esp + 0x30], cx
jbe 0x4066a3
mov eax, dword [esp + 0x18]
mov esi, ecx
and eax, 0xffff
lea ebp, [edx + 2]
mov dword [esp + 0x28], eax
jmp 0x406667
mov eax, dword [esp + 0x28]
mov edx, ebx
add eax, esi
and edx, 0xffff
add ebp, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebx, eax
mov eax, dword [esp + 0x10]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [ebp - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x30]
jb 0x406663
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
xor esi, esi
add eax, 2
mov ebp, eax
mov eax, 1
test ebx, ebx
jbe 0x4067f1
jmp 0x40673f
mov al, byte [esp + 0x2c]
mov cl, 1
cmp bl, cl
mov byte [esp + 0x28], al
jbe 0x4066a7
mov eax, dword [esp + 0x18]
mov esi, 1
and eax, 0xff
lea ebp, [edx + 2]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
add eax, esi
and edx, 0xff
xor eax, edx
add ebp, 2
cdq
idiv esi
mov al, byte [esp + 0x28]
mov byte [esp + 0x18], dl
xor dl, cl
add al, dl
mov edx, dword [esp + 0x10]
mov byte [esp + 0x28], al
mov eax, dword [esp + 0x18]
and eax, 0xff
lea eax, [edx + eax*2]
mov dx, word [eax]
mov word [ebp - 2], dx
xor dx, dx
mov dl, cl
inc cl
inc esi
cmp cl, bl
mov word [eax], dx
jb 0x4066e4
mov edx, dword [esp + 0x10]
jmp 0x4066a7
mov ebp, dword [esp + 0x1c]
mov cl, byte [ebp]
inc ebp
test cl, cl
mov dword [esp + 0x1c], ebp
je 0x4067d0
cmp cl, 0x37
jne 0x40675b
mov cl, 0x49
add cl, 0xc5
jmp 0x406774
cmp cl, 0x38
jne 0x406767
mov cl, 0x4f
add cl, 0xc5
jmp 0x406774
cmp cl, 0x41
jb 0x406771
add cl, 0xc5
jmp 0x406774
add cl, 0xcf
mov dword [esp + 0x28], 5
add eax, eax
test cl, 1
je 0x406785
or al, 1
shr cl, 1
cmp eax, 0x100
jl 0x4067a9
mov ebx, esi
xor ebp, ebp
and ebx, 0xffff
inc esi
mov bp, word [edx + ebx*2]
mov ebx, dword [esp + 0x30]
mov byte [edi + ebp], al
mov eax, 1
mov ebp, dword [esp + 0x28]
dec ebp
mov dword [esp + 0x28], ebp
je 0x4067c0
mov ebp, esi
and ebp, 0xffff
cmp ebp, ebx
jb 0x40677c
mov ecx, esi
and ecx, 0xffff
cmp ecx, ebx
jb 0x40673b
cmp eax, 1
je 0x4067f1
and esi, 0xffff
cmp esi, ebx
jae 0x4067f1
add eax, eax
cmp eax, 0x100
jl 0x4067df
xor ecx, ecx
mov cx, word [edx + esi*2]
mov byte [ecx + edi], al
mov dl, byte [esp + 0x2c]
xor eax, eax
xor ebp, ebp
cmp ebx, eax
mov dword [esp + 0x18], eax
jbe 0x40686d
mov cl, byte [eax + edi]
xor esi, esi
xor cl, dl
mov dword [esp + 0x2c], esi
add dl, cl
mov byte [eax + edi], cl
test eax, eax
mov byte [esp + 0x28], dl
jbe 0x406852
mov ecx, 1
cmp eax, ecx
jbe 0x406849
xor edx, edx
mov dl, byte [esi + edi]
mov esi, edx
xor edx, edx
mov ebx, esi
mov dl, byte [ecx + edi]
shr edx, 1
shr ebx, 1
xor edx, ebx
add ebp, edx
inc ecx
cmp ecx, eax
jb 0x406829
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
mov dl, byte [esp + 0x28]
inc esi
cmp esi, eax
mov dword [esp + 0x2c], esi
jb 0x406819
mov cl, byte [eax + edi]
xor cl, 0x6a
mov byte [eax + edi], cl
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
and eax, 0xffff
cmp eax, ebx
jb 0x406801
xor edx, edx
test ebx, ebx
jbe 0x40689f
xor ecx, ecx
mov esi, dword [esp + 0x10]
xor eax, eax
mov ax, word [esi + ecx*2]
mov esi, dword [esp + 0x24]
mov al, byte [eax + edi]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add ebp, eax
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, ebx
jb 0x406875
cmp dword [0x429670], ebp
je 0x4068b7
mov dword [0x429670], ebp
mov dword [0x42966c], 1
push edi
call fcn.0041953a
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0041953a
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], ebx
jmp 0x406c6b
mov cl, byte [eax + 0x54]
mov ax, word [eax + 0x34]
shr ebp, 0xb
mov byte [esp + 0x2c], cl
mov word [esp + 0x18], ax
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x406918
mov al, byte [eax + edx]
cmp al, 0x30
jl 0x406937
cmp al, 0x5a
jg 0x406937
cmp al, 0x38
jle 0x40690c
cmp al, 0x41
jl 0x406937
inc esi
mov eax, esi
and eax, 0xffff
cmp eax, ecx
jb 0x4068f9
movsx eax, byte [edx + 1]
mov esi, dword [esp + 0x28]
lea ecx, [eax + eax*2]
lea eax, [eax + ecx*4]
movsx ecx, byte [edx]
lea ebx, [ecx + eax*2 - 0x6db]
lea eax, [edx + 2]
cmp ebx, esi
jbe 0x40693e
xor esi, esi
jmp 0x406c67
mov edi, eax
xor eax, eax
test esi, esi
mov ecx, 1
jbe 0x40697e
mov dl, byte [edi]
inc edi
test dl, dl
je 0x406974
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406967
inc eax
mov ecx, 1
dec edx
je 0x406970
cmp eax, esi
jb 0x406957
jmp 0x406974
cmp eax, esi
jb 0x40694b
cmp ecx, 1
je 0x40697e
cmp eax, esi
jae 0x40697e
inc eax
cmp ebx, eax
mov dword [esp + 0x30], eax
jae 0x40698a
mov dword [esp + 0x30], ebx
mov ecx, dword [esp + 0x30]
mov eax, 0x29e
cmp ecx, eax
jbe 0x40699b
mov dword [esp + 0x30], eax
push 0x53c
call fcn.00419545
mov ebx, eax
push 0x29e
mov dword [esp + 0x18], ebx
call fcn.00419545
add esp, 8
mov edi, eax
test ebp, ebp
mov word [ebx], 0
jne 0x406a2f
movzx bx, byte [esp + 0x2c]
mov ecx, 1
cmp word [esp + 0x30], cx
jbe 0x406aa7
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
and eax, 0xffff
mov esi, ecx
mov dword [esp + 0x28], eax
lea ebp, [edx + 2]
jmp 0x4069f5
mov eax, dword [esp + 0x28]
mov edx, ebx
add eax, esi
and edx, 0xffff
add ebp, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebx, eax
mov eax, dword [esp + 0x10]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [ebp - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x30]
jb 0x4069f1
jmp 0x406aa7
mov al, byte [esp + 0x2c]
mov cl, 1
mov byte [esp + 0x28], al
mov al, byte [esp + 0x30]
cmp al, cl
jbe 0x406aa7
mov eax, dword [esp + 0x18]
mov esi, 1
and eax, 0xff
lea ebp, [ebx + 2]
mov dword [esp + 0x1c], eax
jmp 0x406a5c
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
add eax, esi
and edx, 0xff
add ebp, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x28]
mov byte [esp + 0x18], dl
xor dl, cl
add al, dl
mov byte [esp + 0x28], al
mov eax, dword [esp + 0x18]
and eax, 0xff
mov dx, word [ebx + eax*2]
lea eax, [ebx + eax*2]
mov word [ebp - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x30]
inc esi
cmp cl, al
jb 0x406a58
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x30]
add eax, 2
xor edx, edx
mov ebx, eax
mov eax, 1
test esi, esi
jbe 0x406b84
jmp 0x406ac9
mov ebx, dword [esp + 0x1c]
mov cl, byte [ebx]
inc ebx
test cl, cl
mov dword [esp + 0x1c], ebx
je 0x406b5f
cmp cl, 0x37
jne 0x406ae4
mov cl, 0x49
add cl, 0xc5
jmp 0x406afd
cmp cl, 0x38
jne 0x406af0
mov cl, 0x4f
add cl, 0xc5
jmp 0x406afd
cmp cl, 0x41
jb 0x406afa
add cl, 0xc5
jmp 0x406afd
add cl, 0xcf
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x28], 5
add eax, eax
test cl, 1
je 0x406b12
or al, 1
shr cl, 1
cmp eax, 0x100
jl 0x406b36
mov esi, edx
xor ebp, ebp
and esi, 0xffff
inc edx
mov bp, word [ebx + esi*2]
mov esi, dword [esp + 0x30]
mov byte [edi + ebp], al
mov eax, 1
mov ebp, dword [esp + 0x28]
dec ebp
mov dword [esp + 0x28], ebp
je 0x406b4d
mov ebp, edx
and ebp, 0xffff
cmp ebp, esi
jb 0x406b09
mov ecx, edx
and ecx, 0xffff
cmp ecx, esi
jb 0x406ac5
jmp 0x406b63
mov ebx, dword [esp + 0x10]
cmp eax, 1
je 0x406b84
and edx, 0xffff
cmp edx, esi
jae 0x406b84
add eax, eax
cmp eax, 0x100
jl 0x406b72
xor ecx, ecx
mov cx, word [ebx + edx*2]
mov byte [ecx + edi], al
mov dl, byte [esp + 0x2c]
xor ebp, ebp
cmp esi, ebp
mov dword [esp + 0x18], ebp
jbe 0x406c02
xor eax, eax
mov cl, byte [eax + edi]
xor esi, esi
xor cl, dl
mov dword [esp + 0x2c], esi
mov bl, cl
mov byte [eax + edi], cl
add dl, bl
test eax, eax
mov byte [esp + 0x28], dl
jbe 0x406be3
mov ecx, 1
cmp eax, ecx
jbe 0x406bda
xor edx, edx
mov dl, byte [esi + edi]
mov esi, edx
xor edx, edx
mov ebx, esi
mov dl, byte [ecx + edi]
shr edx, 1
shr ebx, 1
xor edx, ebx
add ebp, edx
inc ecx
cmp ecx, eax
jb 0x406bbe
mov dl, byte [esp + 0x28]
mov esi, dword [esp + 0x2c]
inc esi
cmp esi, eax
mov dword [esp + 0x2c], esi
jb 0x406bae
mov cl, byte [eax + edi]
xor cl, 0x6a
mov byte [eax + edi], cl
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
inc eax
mov dword [esp + 0x18], eax
and eax, 0xffff
cmp eax, ecx
jb 0x406b94
mov esi, dword [esp + 0x30]
xor edx, edx
test esi, esi
jbe 0x406c38
xor ecx, ecx
mov ebx, dword [esp + 0x10]
xor eax, eax
mov ax, word [ebx + ecx*2]
mov ebx, dword [esp + 0x24]
mov al, byte [eax + edi]
xor al, dl
mov byte [ecx + ebx], al
and eax, 0xff
add ebp, eax
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, esi
jb 0x406c0e
cmp dword [0x429670], ebp
je 0x406c50
mov dword [0x429670], ebp
mov dword [0x42966c], 1
push edi
call fcn.0041953a
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0041953a
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], esi
push edx
call fcn.00419243
mov eax, dword [esp + 0x2c]
add esp, 4
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x406cbf
mov edx, dword [0x4299d8]
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x406cbf
mov ecx, dword [0x4296d8]
mov byte [ecx], 8
xor ecx, ecx
xor edx, edx
mov esi, 0xa
div esi
mov esi, dword [0x4296d8]
sub esi, ecx
add dl, 0x30
inc ecx
cmp ecx, 8
mov byte [esi + 8], dl
jl 0x406c98
mov edx, dword [0x4296d8]
mov byte [edx + 9], 0
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret