Function at 0x405dc0
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 [0x42abd0]
not ecx
mov eax, dword [eax + 8]
dec ecx
test eax, eax
mov ebx, ecx
je 0x406704
cmp eax, 2
jbe 0x406edf
cmp eax, 4
ja 0x406edf
cmp ebx, 0x10
jl 0x406edf
cmp ebx, 0x18
jg 0x406edf
mov ecx, dword [esp + 0x30]
mov edi, ebp
test ecx, ecx
je 0x4061e3
xor ecx, ecx
cmp eax, 4
mov eax, dword [0x42abd0]
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 0x405e95
mov al, byte [eax + ebp]
cmp al, 0x30
jl 0x405eab
cmp al, 0x5a
jg 0x405eab
test esi, esi
je 0x405e81
cmp al, 0x39
jg 0x405eab
jmp 0x405e89
cmp al, 0x38
jle 0x405e89
cmp al, 0x41
jl 0x405eab
inc edx
mov eax, edx
and eax, 0xffff
cmp eax, ecx
jb 0x405e6c
mov eax, dword [esp + 0x28]
xor ebx, ebx
test esi, esi
setne bl
lea ebx, [ebx*8 + 0xc]
cmp ebx, eax
jbe 0x405eb2
xor eax, eax
jmp 0x406593
mov edi, ebx
test esi, esi
mov dword [esp + 0x10], edi
jne 0x405f21
mov edi, dword [esp + 0x28]
xor eax, eax
test edi, edi
mov esi, ebp
mov ecx, 1
jbe 0x405f00
mov dl, byte [esi]
inc esi
test dl, dl
je 0x405ef6
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x405ee9
inc eax
mov ecx, 1
dec edx
je 0x405ef2
cmp eax, edi
jb 0x405ed9
jmp 0x405ef6
cmp eax, edi
jb 0x405ecd
cmp ecx, 1
je 0x405f00
cmp eax, edi
jae 0x405f00
inc eax
mov edi, eax
cmp ebx, eax
mov dword [esp + 0x10], edi
jae 0x405f10
mov edi, ebx
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x405f21
mov edi, 0x29e
mov dword [esp + 0x10], edi
push 0x53c
call fcn.0041a0a5
mov ebp, eax
push 0x29e
mov dword [esp + 0x30], ebp
call fcn.0041a0a5
movzx bx, byte [esp + 0x38]
mov ecx, 1
add esp, 8
cmp di, cx
mov esi, eax
mov word [ebp], 0
jbe 0x405fb0
mov eax, dword [esp + 0x18]
mov edx, ebp
and eax, 0xffff
mov edi, ecx
mov dword [esp + 0x18], eax
lea ebp, [edx + 2]
jmp 0x405f70
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 0x405f6c
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 0x4060be
jmp 0x405fc9
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 0x40609c
mov ebx, dword [esp + 0x14]
test ebx, ebx
jne 0x40602b
cmp dl, 0x37
jne 0x405ff8
mov dl, 0x49
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x40603f
cmp dl, 0x38
jne 0x40600c
mov dl, 0x4f
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x40603f
cmp dl, 0x41
jb 0x40601e
add dl, 0xc5
mov dword [esp + 0x2c], 5
jmp 0x40603f
add dl, 0xcf
mov dword [esp + 0x2c], 5
jmp 0x40603f
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 0x406052
add eax, eax
test dl, 1
je 0x406050
or al, 1
shr dl, 1
cmp eax, 0x100
jl 0x406075
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 0x40608c
mov ebx, ecx
and ebx, 0xffff
cmp ebx, edi
jb 0x40603f
mov edx, ecx
and edx, 0xffff
cmp edx, edi
jb 0x405fc5
cmp eax, 1
je 0x4060be
and ecx, 0xffff
cmp ecx, edi
jae 0x4060be
add eax, eax
cmp eax, 0x100
jl 0x4060ab
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 0x40617c
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x4060f0
mov dl, byte [esi + ecx]
xor dl, bl
mov al, dl
mov byte [esi + ecx], dl
add bl, al
jmp 0x406116
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 0x406159
mov eax, 1
cmp ecx, eax
jbe 0x40614c
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 0x406134
mov edi, dword [esp + 0x30]
inc edi
cmp edi, ecx
mov dword [esp + 0x30], edi
jb 0x406124
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 0x4060da
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
xor edx, edx
test eax, eax
jbe 0x4061b6
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 0x40618c
cmp dword [0x42a864], ebp
je 0x4061ce
mov dword [0x42a864], ebp
mov dword [0x42a860], 1
push esi
call fcn.0041a09a
push edi
call fcn.0041a09a
mov eax, dword [esp + 0x18]
jmp 0x406590
xor ecx, ecx
cmp eax, 4
mov eax, dword [0x42abd0]
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 0x40624d
mov al, byte [eax + ebp]
cmp al, 0x30
jl 0x405eab
cmp al, 0x5a
jg 0x405eab
test esi, esi
je 0x406235
cmp al, 0x39
jg 0x405eab
jmp 0x406241
cmp al, 0x38
jle 0x406241
cmp al, 0x41
jl 0x405eab
inc edx
mov eax, edx
and eax, 0xffff
cmp eax, ecx
jb 0x406214
mov eax, dword [esp + 0x28]
xor ebx, ebx
test esi, esi
setne bl
lea ebx, [ebx*8 + 0xc]
cmp ebx, eax
jbe 0x40626a
xor eax, eax
jmp 0x406593
mov edi, ebx
test esi, esi
mov dword [esp + 0x10], edi
jne 0x4062db
mov edx, dword [esp + 0x28]
xor eax, eax
test edx, edx
mov esi, ebp
mov ecx, 1
jbe 0x4062ba
mov edi, edx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x4062b0
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x4062a3
inc eax
mov ecx, 1
dec edx
je 0x4062ac
cmp eax, edi
jb 0x406293
jmp 0x4062b0
cmp eax, edi
jb 0x406287
cmp ecx, 1
je 0x4062ba
cmp eax, edi
jae 0x4062ba
inc eax
mov edi, eax
cmp ebx, eax
mov dword [esp + 0x10], edi
jae 0x4062ca
mov edi, ebx
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x4062db
mov edi, 0x29e
mov dword [esp + 0x10], edi
push 0x53c
call fcn.0041a0a5
mov ebx, eax
push 0x29e
mov dword [esp + 0x30], ebx
call fcn.0041a0a5
mov ecx, 1
add esp, 8
mov word [ebx], 0
cmp di, cx
movzx bx, byte [esp + 0x30]
mov esi, eax
jbe 0x406363
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 0x40632b
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 0x406327
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 0x406478
jmp 0x406384
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 0x406457
mov ebp, dword [esp + 0x14]
test ebp, ebp
jne 0x4063e7
cmp dl, 0x37
jne 0x4063b4
mov dl, 0x49
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x4063fb
cmp dl, 0x38
jne 0x4063c8
mov dl, 0x4f
mov dword [esp + 0x2c], 5
add dl, 0xc5
jmp 0x4063fb
cmp dl, 0x41
jb 0x4063da
add dl, 0xc5
mov dword [esp + 0x2c], 5
jmp 0x4063fb
add dl, 0xcf
mov dword [esp + 0x2c], 5
jmp 0x4063fb
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 0x40640e
add eax, eax
test dl, 1
je 0x40640c
or al, 1
shr dl, 1
cmp eax, 0x100
jl 0x406430
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 0x406447
mov ebp, ecx
and ebp, 0xffff
cmp ebp, ebx
jb 0x4063fb
mov edx, ecx
and edx, 0xffff
cmp edx, ebx
jb 0x406380
cmp eax, 1
je 0x406478
and ecx, 0xffff
cmp ecx, ebx
jae 0x406478
add eax, eax
cmp eax, 0x100
jl 0x406466
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 0x406538
jmp 0x406496
mov al, byte [esp + 0x2c]
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x4064a8
mov dl, byte [esi + ecx]
xor dl, al
mov byte [esi + ecx], dl
jmp 0x4064d0
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 0x406515
mov eax, 1
cmp ecx, eax
jbe 0x40650c
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 0x4064f0
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x10]
inc edi
cmp edi, ecx
mov dword [esp + 0x30], edi
jb 0x4064e0
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 0x406492
mov edi, dword [esp + 0x28]
xor edx, edx
test ebx, ebx
jbe 0x40656a
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 0x406540
cmp dword [0x42a864], ebp
je 0x406582
mov dword [0x42a864], ebp
mov dword [0x42a860], 1
push esi
call fcn.0041a09a
push edi
call fcn.0041a09a
mov eax, ebx
add esp, 8
mov ecx, dword [0x42abd0]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x10], eax
cmp dword [ecx + 8], 3
jne 0x40661f
mov ebp, dword [esp + 0x10]
xor cl, cl
xor eax, eax
lea esi, [ebp - 1]
test esi, esi
jle 0x4065ce
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 0x4065b6
mov dl, byte [edi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x4065ef
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 0x4065f6
mov edi, dword [esp + 0x24]
jmp 0x4066b3
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 0x406623
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 0x40664a
and ecx, 0x7fffff
cmp esi, ecx
je 0x40668a
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 0x406691
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 0x4066bb
mov ecx, dword [0x42abd0]
cmp dl, byte [ecx + 0x1e]
je 0x4066f9
pop edi
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov dword [0x42a8d0], esi
jmp 0x406e98
cmp ebx, 8
jl 0x406edf
lea edx, [ebx - 7]
push edx
call fcn.00419c40
mov edx, eax
add esp, 4
test edx, edx
mov dword [esp + 0x14], edx
je 0x406edf
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 [0x42abd0]
mov edi, edx
mov bp, word [eax]
je 0x406af7
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 0x40679e
mov al, byte [eax + edx]
cmp al, 0x30
jl 0x4067f4
cmp al, 0x5a
jg 0x4067f4
cmp al, 0x38
jle 0x406792
cmp al, 0x41
jl 0x4067f4
inc esi
mov eax, esi
and eax, 0xffff
cmp eax, ecx
jb 0x40677f
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 0x406aee
mov edx, ecx
mov esi, eax
test edx, edx
mov eax, 1
jbe 0x40680d
mov cl, byte [esi]
inc esi
test cl, cl
je 0x406803
mov ecx, 5
add eax, eax
cmp eax, 0x100
jl 0x4067eb
inc ebx
mov eax, 1
dec ecx
je 0x4067ff
cmp ebx, edx
jb 0x4067dc
jmp 0x406803
xor ebx, ebx
mov dword [esp + 0x10], ebx
jmp 0x406e8b
cmp ebx, edx
jb 0x4067d0
cmp eax, 1
je 0x40680d
cmp ebx, edx
jae 0x40680d
inc ebx
cmp edi, ebx
mov dword [esp + 0x30], ebx
jae 0x40681b
mov dword [esp + 0x30], edi
mov ebx, edi
cmp ebx, 0x29e
jbe 0x40682f
mov dword [esp + 0x30], 0x29e
mov ebx, dword [esp + 0x30]
push 0x53c
call fcn.0041a0a5
mov esi, eax
push 0x29e
mov dword [esp + 0x18], esi
call fcn.0041a0a5
add esp, 8
mov edi, eax
test ebp, ebp
mov word [esi], 0
mov edx, esi
jne 0x4068e1
movzx bx, byte [esp + 0x2c]
mov ecx, 1
cmp word [esp + 0x30], cx
jbe 0x4068c3
mov eax, dword [esp + 0x18]
mov esi, ecx
and eax, 0xffff
lea ebp, [edx + 2]
mov dword [esp + 0x28], eax
jmp 0x406887
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 0x406883
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 0x406a11
jmp 0x40695f
mov al, byte [esp + 0x2c]
mov cl, 1
cmp bl, cl
mov byte [esp + 0x28], al
jbe 0x4068c7
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 0x406904
mov edx, dword [esp + 0x10]
jmp 0x4068c7
mov ebp, dword [esp + 0x1c]
mov cl, byte [ebp]
inc ebp
test cl, cl
mov dword [esp + 0x1c], ebp
je 0x4069f0
cmp cl, 0x37
jne 0x40697b
mov cl, 0x49
add cl, 0xc5
jmp 0x406994
cmp cl, 0x38
jne 0x406987
mov cl, 0x4f
add cl, 0xc5
jmp 0x406994
cmp cl, 0x41
jb 0x406991
add cl, 0xc5
jmp 0x406994
add cl, 0xcf
mov dword [esp + 0x28], 5
add eax, eax
test cl, 1
je 0x4069a5
or al, 1
shr cl, 1
cmp eax, 0x100
jl 0x4069c9
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 0x4069e0
mov ebp, esi
and ebp, 0xffff
cmp ebp, ebx
jb 0x40699c
mov ecx, esi
and ecx, 0xffff
cmp ecx, ebx
jb 0x40695b
cmp eax, 1
je 0x406a11
and esi, 0xffff
cmp esi, ebx
jae 0x406a11
add eax, eax
cmp eax, 0x100
jl 0x4069ff
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 0x406a8d
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 0x406a72
mov ecx, 1
cmp eax, ecx
jbe 0x406a69
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 0x406a49
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 0x406a39
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 0x406a21
xor edx, edx
test ebx, ebx
jbe 0x406abf
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 0x406a95
cmp dword [0x42a864], ebp
je 0x406ad7
mov dword [0x42a864], ebp
mov dword [0x42a860], 1
push edi
call fcn.0041a09a
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0041a09a
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], ebx
jmp 0x406e8b
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 0x406b38
mov al, byte [eax + edx]
cmp al, 0x30
jl 0x406b57
cmp al, 0x5a
jg 0x406b57
cmp al, 0x38
jle 0x406b2c
cmp al, 0x41
jl 0x406b57
inc esi
mov eax, esi
and eax, 0xffff
cmp eax, ecx
jb 0x406b19
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 0x406b5e
xor esi, esi
jmp 0x406e87
mov edi, eax
xor eax, eax
test esi, esi
mov ecx, 1
jbe 0x406b9e
mov dl, byte [edi]
inc edi
test dl, dl
je 0x406b94
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406b87
inc eax
mov ecx, 1
dec edx
je 0x406b90
cmp eax, esi
jb 0x406b77
jmp 0x406b94
cmp eax, esi
jb 0x406b6b
cmp ecx, 1
je 0x406b9e
cmp eax, esi
jae 0x406b9e
inc eax
cmp ebx, eax
mov dword [esp + 0x30], eax
jae 0x406baa
mov dword [esp + 0x30], ebx
mov ecx, dword [esp + 0x30]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406bbb
mov dword [esp + 0x30], eax
push 0x53c
call fcn.0041a0a5
mov ebx, eax
push 0x29e
mov dword [esp + 0x18], ebx
call fcn.0041a0a5
add esp, 8
mov edi, eax
test ebp, ebp
mov word [ebx], 0
jne 0x406c4f
movzx bx, byte [esp + 0x2c]
mov ecx, 1
cmp word [esp + 0x30], cx
jbe 0x406cc7
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 0x406c15
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 0x406c11
jmp 0x406cc7
mov al, byte [esp + 0x2c]
mov cl, 1
mov byte [esp + 0x28], al
mov al, byte [esp + 0x30]
cmp al, cl
jbe 0x406cc7
mov eax, dword [esp + 0x18]
mov esi, 1
and eax, 0xff
lea ebp, [ebx + 2]
mov dword [esp + 0x1c], eax
jmp 0x406c7c
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 0x406c78
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 0x406da4
jmp 0x406ce9
mov ebx, dword [esp + 0x1c]
mov cl, byte [ebx]
inc ebx
test cl, cl
mov dword [esp + 0x1c], ebx
je 0x406d7f
cmp cl, 0x37
jne 0x406d04
mov cl, 0x49
add cl, 0xc5
jmp 0x406d1d
cmp cl, 0x38
jne 0x406d10
mov cl, 0x4f
add cl, 0xc5
jmp 0x406d1d
cmp cl, 0x41
jb 0x406d1a
add cl, 0xc5
jmp 0x406d1d
add cl, 0xcf
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x28], 5
add eax, eax
test cl, 1
je 0x406d32
or al, 1
shr cl, 1
cmp eax, 0x100
jl 0x406d56
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 0x406d6d
mov ebp, edx
and ebp, 0xffff
cmp ebp, esi
jb 0x406d29
mov ecx, edx
and ecx, 0xffff
cmp ecx, esi
jb 0x406ce5
jmp 0x406d83
mov ebx, dword [esp + 0x10]
cmp eax, 1
je 0x406da4
and edx, 0xffff
cmp edx, esi
jae 0x406da4
add eax, eax
cmp eax, 0x100
jl 0x406d92
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 0x406e22
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 0x406e03
mov ecx, 1
cmp eax, ecx
jbe 0x406dfa
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 0x406dde
mov dl, byte [esp + 0x28]
mov esi, dword [esp + 0x2c]
inc esi
cmp esi, eax
mov dword [esp + 0x2c], esi
jb 0x406dce
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 0x406db4
mov esi, dword [esp + 0x30]
xor edx, edx
test esi, esi
jbe 0x406e58
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 0x406e2e
cmp dword [0x42a864], ebp
je 0x406e70
mov dword [0x42a864], ebp
mov dword [0x42a860], 1
push edi
call fcn.0041a09a
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0041a09a
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], esi
push edx
call fcn.00419da3
mov eax, dword [esp + 0x2c]
add esp, 4
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x406edf
mov edx, dword [0x42abd0]
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x406edf
mov ecx, dword [0x42a8d0]
mov byte [ecx], 8
xor ecx, ecx
xor edx, edx
mov esi, 0xa
div esi
mov esi, dword [0x42a8d0]
sub esi, ecx
add dl, 0x30
inc ecx
cmp ecx, 8
mov byte [esi + 8], dl
jl 0x406eb8
mov edx, dword [0x42a8d0]
mov byte [edx + 9], 0
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret