Function at 0x405f00
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 [0x42acf0]
not ecx
mov eax, dword [eax + 8]
dec ecx
test eax, eax
mov ebx, ecx
je 0x406844
cmp eax, 2
jbe 0x40701f
cmp eax, 4
ja 0x40701f
cmp ebx, 0x10
jl 0x40701f
cmp ebx, 0x18
jg 0x40701f
mov ecx, dword [esp + 0x30]
mov edi, ebp
test ecx, ecx
je 0x406323
xor ecx, ecx
cmp eax, 4
mov eax, dword [0x42acf0]
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 0x405fd5
mov al, byte [eax + ebp]
cmp al, 0x30
jl 0x405feb
cmp al, 0x5a
jg 0x405feb
test esi, esi
je 0x405fc1
cmp al, 0x39
jg 0x405feb
jmp 0x405fc9
cmp al, 0x38
jle 0x405fc9
cmp al, 0x41
jl 0x405feb
inc edx
mov eax, edx
and eax, 0xffff
cmp eax, ecx
jb 0x405fac
mov eax, dword [esp + 0x28]
xor ebx, ebx
test esi, esi
setne bl
lea ebx, [ebx*8 + 0xc]
cmp ebx, eax
jbe 0x405ff2
xor eax, eax
jmp 0x4066d3
mov edi, ebx
test esi, esi
mov dword [esp + 0x10], edi
jne 0x406061
mov edi, dword [esp + 0x28]
xor eax, eax
test edi, edi
mov esi, ebp
mov ecx, 1
jbe 0x406040
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406036
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406029
inc eax
mov ecx, 1
dec edx
je 0x406032
cmp eax, edi
jb 0x406019
jmp 0x406036
cmp eax, edi
jb 0x40600d
cmp ecx, 1
je 0x406040
cmp eax, edi
jae 0x406040
inc eax
mov edi, eax
cmp ebx, eax
mov dword [esp + 0x10], edi
jae 0x406050
mov edi, ebx
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x406061
mov edi, 0x29e
mov dword [esp + 0x10], edi
push 0x53c
call fcn.0041a6e5
mov ebp, eax
push 0x29e
mov dword [esp + 0x30], ebp
call fcn.0041a6e5
movzx bx, byte [esp + 0x38]
mov ecx, 1
add esp, 8
cmp di, cx
mov esi, eax
mov word [ebp], 0
jbe 0x4060f0
mov eax, dword [esp + 0x18]
mov edx, ebp
and eax, 0xffff
mov edi, ecx
mov dword [esp + 0x18], eax
lea ebp, [edx + 2]
jmp 0x4060b0
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 0x4060ac
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 0x4061fe
jmp 0x406109
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 0x4061dc
mov ebx, dword [esp + 0x14]
test ebx, ebx
jne 0x40616b
cmp dl, 0x37
jne 0x406138
mov dl, 0x49
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x40617f
cmp dl, 0x38
jne 0x40614c
mov dl, 0x4f
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x40617f
cmp dl, 0x41
jb 0x40615e
add dl, 0xc5
mov dword [esp + 0x2c], 5
jmp 0x40617f
add dl, 0xcf
mov dword [esp + 0x2c], 5
jmp 0x40617f
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 0x406192
add eax, eax
test dl, 1
je 0x406190
or al, 1
shr dl, 1
cmp eax, 0x100
jl 0x4061b5
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 0x4061cc
mov ebx, ecx
and ebx, 0xffff
cmp ebx, edi
jb 0x40617f
mov edx, ecx
and edx, 0xffff
cmp edx, edi
jb 0x406105
cmp eax, 1
je 0x4061fe
and ecx, 0xffff
cmp ecx, edi
jae 0x4061fe
add eax, eax
cmp eax, 0x100
jl 0x4061eb
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 0x4062bc
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x406230
mov dl, byte [esi + ecx]
xor dl, bl
mov al, dl
mov byte [esi + ecx], dl
add bl, al
jmp 0x406256
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 0x406299
mov eax, 1
cmp ecx, eax
jbe 0x40628c
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 0x406274
mov edi, dword [esp + 0x30]
inc edi
cmp edi, ecx
mov dword [esp + 0x30], edi
jb 0x406264
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 0x40621a
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
xor edx, edx
test eax, eax
jbe 0x4062f6
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 0x4062cc
cmp dword [0x42a984], ebp
je 0x40630e
mov dword [0x42a984], ebp
mov dword [0x42a980], 1
push esi
call fcn.0041a6da
push edi
call fcn.0041a6da
mov eax, dword [esp + 0x18]
jmp 0x4066d0
xor ecx, ecx
cmp eax, 4
mov eax, dword [0x42acf0]
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 0x40638d
mov al, byte [eax + ebp]
cmp al, 0x30
jl 0x405feb
cmp al, 0x5a
jg 0x405feb
test esi, esi
je 0x406375
cmp al, 0x39
jg 0x405feb
jmp 0x406381
cmp al, 0x38
jle 0x406381
cmp al, 0x41
jl 0x405feb
inc edx
mov eax, edx
and eax, 0xffff
cmp eax, ecx
jb 0x406354
mov eax, dword [esp + 0x28]
xor ebx, ebx
test esi, esi
setne bl
lea ebx, [ebx*8 + 0xc]
cmp ebx, eax
jbe 0x4063aa
xor eax, eax
jmp 0x4066d3
mov edi, ebx
test esi, esi
mov dword [esp + 0x10], edi
jne 0x40641b
mov edx, dword [esp + 0x28]
xor eax, eax
test edx, edx
mov esi, ebp
mov ecx, 1
jbe 0x4063fa
mov edi, edx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x4063f0
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x4063e3
inc eax
mov ecx, 1
dec edx
je 0x4063ec
cmp eax, edi
jb 0x4063d3
jmp 0x4063f0
cmp eax, edi
jb 0x4063c7
cmp ecx, 1
je 0x4063fa
cmp eax, edi
jae 0x4063fa
inc eax
mov edi, eax
cmp ebx, eax
mov dword [esp + 0x10], edi
jae 0x40640a
mov edi, ebx
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x40641b
mov edi, 0x29e
mov dword [esp + 0x10], edi
push 0x53c
call fcn.0041a6e5
mov ebx, eax
push 0x29e
mov dword [esp + 0x30], ebx
call fcn.0041a6e5
mov ecx, 1
add esp, 8
mov word [ebx], 0
cmp di, cx
movzx bx, byte [esp + 0x30]
mov esi, eax
jbe 0x4064a3
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 0x40646b
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 0x406467
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 0x4065b8
jmp 0x4064c4
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 0x406597
mov ebp, dword [esp + 0x14]
test ebp, ebp
jne 0x406527
cmp dl, 0x37
jne 0x4064f4
mov dl, 0x49
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x40653b
cmp dl, 0x38
jne 0x406508
mov dl, 0x4f
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x40653b
cmp dl, 0x41
jb 0x40651a
add dl, 0xc5
mov dword [esp + 0x2c], 5
jmp 0x40653b
add dl, 0xcf
mov dword [esp + 0x2c], 5
jmp 0x40653b
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 0x40654e
add eax, eax
test dl, 1
je 0x40654c
or al, 1
shr dl, 1
cmp eax, 0x100
jl 0x406570
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 0x406587
mov ebp, ecx
and ebp, 0xffff
cmp ebp, ebx
jb 0x40653b
mov edx, ecx
and edx, 0xffff
cmp edx, ebx
jb 0x4064c0
cmp eax, 1
je 0x4065b8
and ecx, 0xffff
cmp ecx, ebx
jae 0x4065b8
add eax, eax
cmp eax, 0x100
jl 0x4065a6
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 0x406678
jmp 0x4065d6
mov al, byte [esp + 0x2c]
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x4065e8
mov dl, byte [esi + ecx]
xor dl, al
mov byte [esi + ecx], dl
jmp 0x406610
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 0x406655
mov eax, 1
cmp ecx, eax
jbe 0x40664c
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 0x406630
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x10]
inc edi
cmp edi, ecx
mov dword [esp + 0x30], edi
jb 0x406620
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 0x4065d2
mov edi, dword [esp + 0x28]
xor edx, edx
test ebx, ebx
jbe 0x4066aa
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 0x406680
cmp dword [0x42a984], ebp
je 0x4066c2
mov dword [0x42a984], ebp
mov dword [0x42a980], 1
push esi
call fcn.0041a6da
push edi
call fcn.0041a6da
mov eax, ebx
add esp, 8
mov ecx, dword [0x42acf0]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x10], eax
cmp dword [ecx + 8], 3
jne 0x40675f
mov ebp, dword [esp + 0x10]
xor cl, cl
xor eax, eax
lea esi, [ebp - 1]
test esi, esi
jle 0x40670e
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 0x4066f6
mov dl, byte [edi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x40672f
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 0x406736
mov edi, dword [esp + 0x24]
jmp 0x4067f3
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 0x406763
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 0x40678a
and ecx, 0x7fffff
cmp esi, ecx
je 0x4067ca
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 0x4067d1
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 0x4067fb
mov ecx, dword [0x42acf0]
cmp dl, byte [ecx + 0x1e]
je 0x406839
pop edi
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov dword [0x42a9f0], esi
jmp 0x406fd8
cmp ebx, 8
jl 0x40701f
lea edx, [ebx - 7]
push edx
call fcn.0041a280
mov edx, eax
add esp, 4
test edx, edx
mov dword [esp + 0x14], edx
je 0x40701f
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 [0x42acf0]
mov edi, edx
mov bp, word [eax]
je 0x406c37
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 0x4068de
mov al, byte [eax + edx]
cmp al, 0x30
jl 0x406934
cmp al, 0x5a
jg 0x406934
cmp al, 0x38
jle 0x4068d2
cmp al, 0x41
jl 0x406934
inc esi
mov eax, esi
and eax, 0xffff
cmp eax, ecx
jb 0x4068bf
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 0x406c2e
mov edx, ecx
mov esi, eax
test edx, edx
mov eax, 1
jbe 0x40694d
mov cl, byte [esi]
inc esi
test cl, cl
je 0x406943
mov ecx, 5
add eax, eax
cmp eax, 0x100
jl 0x40692b
inc ebx
mov eax, 1
dec ecx
je 0x40693f
cmp ebx, edx
jb 0x40691c
jmp 0x406943
xor ebx, ebx
mov dword [esp + 0x10], ebx
jmp 0x406fcb
cmp ebx, edx
jb 0x406910
cmp eax, 1
je 0x40694d
cmp ebx, edx
jae 0x40694d
inc ebx
cmp edi, ebx
mov dword [esp + 0x30], ebx
jae 0x40695b
mov dword [esp + 0x30], edi
mov ebx, edi
cmp ebx, 0x29e
jbe 0x40696f
mov dword [esp + 0x30], 0x29e
mov ebx, dword [esp + 0x30]
push 0x53c
call fcn.0041a6e5
mov esi, eax
push 0x29e
mov dword [esp + 0x18], esi
call fcn.0041a6e5
add esp, 8
mov edi, eax
test ebp, ebp
mov word [esi], 0
mov edx, esi
jne 0x406a21
movzx bx, byte [esp + 0x2c]
mov ecx, 1
cmp word [esp + 0x30], cx
jbe 0x406a03
mov eax, dword [esp + 0x18]
mov esi, ecx
and eax, 0xffff
lea ebp, [edx + 2]
mov dword [esp + 0x28], eax
jmp 0x4069c7
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 0x4069c3
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 0x406b51
jmp 0x406a9f
mov al, byte [esp + 0x2c]
mov cl, 1
cmp bl, cl
mov byte [esp + 0x28], al
jbe 0x406a07
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 0x406a44
mov edx, dword [esp + 0x10]
jmp 0x406a07
mov ebp, dword [esp + 0x1c]
mov cl, byte [ebp]
inc ebp
test cl, cl
mov dword [esp + 0x1c], ebp
je 0x406b30
cmp cl, 0x37
jne 0x406abb
mov cl, 0x49
add cl, 0xc5
jmp 0x406ad4
cmp cl, 0x38
jne 0x406ac7
mov cl, 0x4f
add cl, 0xc5
jmp 0x406ad4
cmp cl, 0x41
jb 0x406ad1
add cl, 0xc5
jmp 0x406ad4
add cl, 0xcf
mov dword [esp + 0x28], 5
add eax, eax
test cl, 1
je 0x406ae5
or al, 1
shr cl, 1
cmp eax, 0x100
jl 0x406b09
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 0x406b20
mov ebp, esi
and ebp, 0xffff
cmp ebp, ebx
jb 0x406adc
mov ecx, esi
and ecx, 0xffff
cmp ecx, ebx
jb 0x406a9b
cmp eax, 1
je 0x406b51
and esi, 0xffff
cmp esi, ebx
jae 0x406b51
add eax, eax
cmp eax, 0x100
jl 0x406b3f
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 0x406bcd
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 0x406bb2
mov ecx, 1
cmp eax, ecx
jbe 0x406ba9
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 0x406b89
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 0x406b79
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 0x406b61
xor edx, edx
test ebx, ebx
jbe 0x406bff
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 0x406bd5
cmp dword [0x42a984], ebp
je 0x406c17
mov dword [0x42a984], ebp
mov dword [0x42a980], 1
push edi
call fcn.0041a6da
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0041a6da
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], ebx
jmp 0x406fcb
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 0x406c78
mov al, byte [eax + edx]
cmp al, 0x30
jl 0x406c97
cmp al, 0x5a
jg 0x406c97
cmp al, 0x38
jle 0x406c6c
cmp al, 0x41
jl 0x406c97
inc esi
mov eax, esi
and eax, 0xffff
cmp eax, ecx
jb 0x406c59
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 0x406c9e
xor esi, esi
jmp 0x406fc7
mov edi, eax
xor eax, eax
test esi, esi
mov ecx, 1
jbe 0x406cde
mov dl, byte [edi]
inc edi
test dl, dl
je 0x406cd4
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406cc7
inc eax
mov ecx, 1
dec edx
je 0x406cd0
cmp eax, esi
jb 0x406cb7
jmp 0x406cd4
cmp eax, esi
jb 0x406cab
cmp ecx, 1
je 0x406cde
cmp eax, esi
jae 0x406cde
inc eax
cmp ebx, eax
mov dword [esp + 0x30], eax
jae 0x406cea
mov dword [esp + 0x30], ebx
mov ecx, dword [esp + 0x30]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406cfb
mov dword [esp + 0x30], eax
push 0x53c
call fcn.0041a6e5
mov ebx, eax
push 0x29e
mov dword [esp + 0x18], ebx
call fcn.0041a6e5
add esp, 8
mov edi, eax
test ebp, ebp
mov word [ebx], 0
jne 0x406d8f
movzx bx, byte [esp + 0x2c]
mov ecx, 1
cmp word [esp + 0x30], cx
jbe 0x406e07
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 0x406d55
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 0x406d51
jmp 0x406e07
mov al, byte [esp + 0x2c]
mov cl, 1
mov byte [esp + 0x28], al
mov al, byte [esp + 0x30]
cmp al, cl
jbe 0x406e07
mov eax, dword [esp + 0x18]
mov esi, 1
and eax, 0xff
lea ebp, [ebx + 2]
mov dword [esp + 0x1c], eax
jmp 0x406dbc
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 0x406db8
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 0x406ee4
jmp 0x406e29
mov ebx, dword [esp + 0x1c]
mov cl, byte [ebx]
inc ebx
test cl, cl
mov dword [esp + 0x1c], ebx
je 0x406ebf
cmp cl, 0x37
jne 0x406e44
mov cl, 0x49
add cl, 0xc5
jmp 0x406e5d
cmp cl, 0x38
jne 0x406e50
mov cl, 0x4f
add cl, 0xc5
jmp 0x406e5d
cmp cl, 0x41
jb 0x406e5a
add cl, 0xc5
jmp 0x406e5d
add cl, 0xcf
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x28], 5
add eax, eax
test cl, 1
je 0x406e72
or al, 1
shr cl, 1
cmp eax, 0x100
jl 0x406e96
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 0x406ead
mov ebp, edx
and ebp, 0xffff
cmp ebp, esi
jb 0x406e69
mov ecx, edx
and ecx, 0xffff
cmp ecx, esi
jb 0x406e25
jmp 0x406ec3
mov ebx, dword [esp + 0x10]
cmp eax, 1
je 0x406ee4
and edx, 0xffff
cmp edx, esi
jae 0x406ee4
add eax, eax
cmp eax, 0x100
jl 0x406ed2
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 0x406f62
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 0x406f43
mov ecx, 1
cmp eax, ecx
jbe 0x406f3a
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 0x406f1e
mov dl, byte [esp + 0x28]
mov esi, dword [esp + 0x2c]
inc esi
cmp esi, eax
mov dword [esp + 0x2c], esi
jb 0x406f0e
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 0x406ef4
mov esi, dword [esp + 0x30]
xor edx, edx
test esi, esi
jbe 0x406f98
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 0x406f6e
cmp dword [0x42a984], ebp
je 0x406fb0
mov dword [0x42a984], ebp
mov dword [0x42a980], 1
push edi
call fcn.0041a6da
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0041a6da
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], esi
push edx
call fcn.0041a3e3
mov eax, dword [esp + 0x2c]
add esp, 4
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x40701f
mov edx, dword [0x42acf0]
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x40701f
mov ecx, dword [0x42a9f0]
mov byte [ecx], 8
xor ecx, ecx
xor edx, edx
mov esi, 0xa
div esi
mov esi, dword [0x42a9f0]
sub esi, ecx
add dl, 0x30
inc ecx
cmp ecx, 8
mov byte [esi + 8], dl
jl 0x406ff8
mov edx, dword [0x42a9f0]
mov byte [edx + 9], 0
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret