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

Disassembly:
sub esp, 0x38
mov ecx, dword [esp + 0x40]
push ebx
push ebp
push esi
mov edx, ecx
push edi
mov edi, dword [esp + 0x4c]
xor eax, eax
shr ecx, 2
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x14], 0
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x42a7e8]
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
test eax, eax
mov ebp, ecx
je 0x406af7
cmp eax, 2
jbe 0x407733
cmp eax, 4
ja 0x407733
cmp ebp, 0x10
jl 0x407733
cmp ebp, 0x18
jg 0x407733
mov ecx, dword [esp + 0x58]
mov edi, ebx
test ecx, ecx
je 0x40639c
xor ecx, ecx
cmp eax, 4
mov al, byte [edx + 0x53]
sete cl
mov esi, ecx
mov cx, word [edx + 0x1e]
mov byte [esp + 0x58], al
mov word [esp + 0x44], cx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x3c], esi
mov edi, ecx
mov ecx, eax
mov dword [esp + 0x1c], edi
je 0x405e07
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x405e1f
cmp al, 0x5a
jg 0x405e1f
test esi, esi
je 0x405df3
cmp al, 0x39
jg 0x405e1f
jmp 0x405dfb
cmp al, 0x38
jle 0x405dfb
cmp al, 0x41
jl 0x405e1f
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edi
jb 0x405dde
xor eax, eax
test esi, esi
setne al
lea eax, [eax*8 + 0xc]
mov ebp, eax
mov eax, dword [esp + 0x50]
cmp ebp, eax
jbe 0x405e2c
xor eax, eax
mov ebp, eax
mov dword [esp + 0x14], ebp
jmp 0x40698c
mov edi, ebp
test esi, esi
mov dword [esp + 0x10], edi
jne 0x405e9b
mov edi, dword [esp + 0x50]
xor eax, eax
test edi, edi
mov esi, ebx
mov ecx, 1
jbe 0x405e7a
mov dl, byte [esi]
inc esi
test dl, dl
je 0x405e70
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x405e63
inc eax
mov ecx, 1
dec edx
je 0x405e6c
cmp eax, edi
jb 0x405e53
jmp 0x405e70
cmp eax, edi
jb 0x405e47
cmp ecx, 1
je 0x405e7a
cmp eax, edi
jae 0x405e7a
inc eax
mov edi, eax
cmp ebp, eax
mov dword [esp + 0x10], edi
jae 0x405e8a
mov edi, ebp
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x405e9b
mov edi, 0x29e
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x1c]
xor ecx, ecx
shr esi, 2
mov eax, ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x40], esi
je 0x405ef3
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
dec esi
jne 0x405eb0
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x1c]
and edx, 3
mov dword [esp + 0x38], edx
jbe 0x405f16
mov esi, ecx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea ecx, [esi + ecx*2]
add ecx, ebx
inc eax
dec edx
jne 0x405f00
mov dword [esp + 0x2c], ecx
push 0x53c
call fcn.0041a1b5
mov esi, eax
push 0x29e
mov dword [esp + 0x58], esi
call fcn.0041a1b5
movzx bp, byte [esp + 0x60]
mov ecx, 1
add esp, 8
cmp di, cx
mov dword [esp + 0x28], eax
mov word [esi], 0
jbe 0x405f98
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [eax + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 0x50]
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 0x405f5f
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x40]
xor ebp, ebp
xor edx, edx
cmp esi, ebp
mov dword [esp + 0x30], edx
lea eax, [eax + edi - 1]
jbe 0x405ff7
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 0x405fb4
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x38]
cmp ecx, ebp
jbe 0x406015
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 0x405fff
mov dword [esp + 0x30], edx
mov esi, dword [0x42a8f4]
mov dword [esp + 0x40], edi
xor edi, edi
mov dword [esp + 0x18], ebp
mov ecx, dword [esi*4 + 0x42a568]
mov dword [esp + 0x34], ebp
cmp ecx, ebp
mov dword [esp + 0x44], ebp
mov eax, 1
je 0x40608c
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x38], dl
je 0x406062
mov edx, dword [esp + 0x38]
and edx, 0xff
lea ebx, [edx - 1]
cmp ebx, esi
je 0x406062
cmp edx, dword [0x42a8f0]
jle 0x40608c
mov edx, dword [ecx]
lea ebp, [ecx + 5]
mov ecx, dword [0x42a7e8]
mov dword [esp + 0x44], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x40608c
mov dword [esp + 0x24], 8
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
test edx, edx
jbe 0x40626d
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 0x406246
mov esi, dword [esp + 0x3c]
test esi, esi
jne 0x406112
cmp cl, 0x37
jne 0x4060d3
mov cl, 0x49
mov dword [esp + 0x38], 5
add cl, 0xc5
mov byte [esp + 0x14], cl
jmp 0x406126
cmp cl, 0x38
jne 0x4060eb
mov cl, 0x4f
mov dword [esp + 0x38], 5
add cl, 0xc5
mov byte [esp + 0x14], cl
jmp 0x406126
cmp cl, 0x41
jb 0x406101
add cl, 0xc5
mov dword [esp + 0x38], 5
mov byte [esp + 0x14], cl
jmp 0x406126
add cl, 0xcf
mov dword [esp + 0x38], 5
mov byte [esp + 0x14], cl
jmp 0x406126
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], 1
and eax, 0xff
or ah, 1
mov esi, dword [esp + 0x3c]
test esi, esi
jne 0x40613d
add eax, eax
test cl, 1
je 0x406137
or al, 1
shr cl, 1
mov byte [esp + 0x14], cl
cmp eax, 0x100
jl 0x40621b
mov esi, dword [esp + 0x50]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x20], edi
mov byte [ecx + ebx], al
mov eax, dword [esp + 0x34]
cmp eax, edx
jae 0x40620e
test ebp, ebp
je 0x40620e
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebp]
cmp ecx, eax
jne 0x40620e
mov ecx, dword [ebp + 4]
mov eax, dword [esp + 0x2c]
cmp ecx, eax
jne 0x40620e
mov edx, dword [esp + 0x30]
mov eax, dword [ebp + 8]
cmp eax, edx
jne 0x40620e
mov ecx, dword [esp + 0x24]
xor eax, eax
test ecx, ecx
jle 0x406200
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x54]
sub edi, ecx
mov ecx, dword [esp + 0x18]
sub ecx, edx
lea ebp, [ecx + 0xc]
mov edx, dword [esp + 0x54]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x4061f4
mov edx, dword [esp + 0x18]
mov cl, al
add cl, 0x77
mov dl, byte [eax + edx + 0x14]
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x4061f4
mov ecx, dword [esp + 0x24]
inc eax
cmp eax, ecx
jl 0x4061bc
jmp 0x4061f8
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
cmp eax, ecx
jne 0x40620a
add edi, 0xffff
inc dword [esp + 0x34]
mov cl, byte [esp + 0x14]
mov edx, dword [esp + 0x10]
mov eax, 1
mov esi, dword [esp + 0x38]
dec esi
mov dword [esp + 0x38], esi
je 0x406236
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x406126
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x40609c
cmp eax, 1
je 0x40626d
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x40626d
add eax, eax
cmp eax, 0x100
jl 0x406257
mov edi, dword [esp + 0x50]
xor esi, esi
mov si, word [edi + ecx*2]
mov byte [esi + ebx], al
mov al, byte [esp + 0x58]
xor edi, edi
cmp edx, edi
mov dword [esp + 0x20], edi
mov byte [esp + 0x54], al
jbe 0x406321
xor ecx, ecx
jmp 0x40628b
mov al, byte [esp + 0x54]
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x40629d
mov dl, byte [ebx + ecx]
xor dl, al
mov byte [ebx + ecx], dl
jmp 0x4062c5
mov eax, dword [esp + 0x54]
mov esi, 0xa
and eax, 0xff
cdq
idiv esi
xor eax, eax
mov al, byte [ebx + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv esi
mov al, byte [esp + 0x54]
add dl, 0x30
mov byte [ebx + ecx], dl
add al, dl
xor ebp, ebp
test ecx, ecx
mov byte [esp + 0x54], al
jbe 0x4062fe
mov eax, 1
cmp ecx, eax
jbe 0x4062f9
xor edx, edx
mov dl, byte [ebx + ebp]
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 0x4062e1
inc ebp
cmp ebp, ecx
jb 0x4062d1
mov al, byte [ebx + ecx]
xor al, 0x6a
mov byte [ebx + ecx], al
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x20], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x406287
mov eax, dword [esp + 0x10]
xor edx, edx
test eax, eax
jbe 0x40635c
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x50]
xor ecx, ecx
xor eax, eax
mov ax, word [ebp + ecx*2]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x406335
cmp dword [0x42a440], edi
je 0x406374
mov dword [0x42a440], edi
mov dword [0x42a43c], 1
push ebx
call fcn.0041a1aa
mov ecx, dword [esp + 0x54]
push ecx
call fcn.0041a1aa
mov eax, dword [esp + 0x18]
mov edx, dword [0x42a7e8]
mov ebp, eax
add esp, 8
mov dword [esp + 0x14], ebp
jmp 0x40698c
xor ecx, ecx
cmp eax, 4
mov al, byte [edx + 0x54]
sete cl
mov esi, ecx
mov cx, word [edx + 0x34]
mov byte [esp + 0x58], al
mov word [esp + 0x44], cx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x2c], esi
mov edi, ecx
mov ecx, eax
mov dword [esp + 0x20], edi
je 0x4063f7
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x40640f
cmp al, 0x5a
jg 0x40640f
test esi, esi
je 0x4063e3
cmp al, 0x39
jg 0x40640f
jmp 0x4063eb
cmp al, 0x38
jle 0x4063eb
cmp al, 0x41
jl 0x40640f
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edi
jb 0x4063ce
xor eax, eax
test esi, esi
setne al
lea eax, [eax*8 + 0xc]
mov ebp, eax
mov eax, dword [esp + 0x50]
cmp ebp, eax
jbe 0x406416
xor eax, eax
jmp 0x406986
mov edi, ebp
test esi, esi
mov dword [esp + 0x10], edi
jne 0x406485
mov edi, dword [esp + 0x50]
xor eax, eax
test edi, edi
mov esi, ebx
mov ecx, 1
jbe 0x406464
mov dl, byte [esi]
inc esi
test dl, dl
je 0x40645a
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x40644d
inc eax
mov ecx, 1
dec edx
je 0x406456
cmp eax, edi
jb 0x40643d
jmp 0x40645a
cmp eax, edi
jb 0x406431
cmp ecx, 1
je 0x406464
cmp eax, edi
jae 0x406464
inc eax
mov edi, eax
cmp ebp, eax
mov dword [esp + 0x10], edi
jae 0x406474
mov edi, ebp
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x406485
mov edi, 0x29e
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x20]
xor ecx, ecx
shr esi, 2
mov eax, ebx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x50], esi
je 0x4064dd
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
mov edx, ecx
shr edx, 0x1f
lea ecx, [edx + ecx*2]
xor edx, edx
mov dl, byte [eax]
add ecx, edx
inc eax
dec esi
jne 0x40649a
mov dword [esp + 0x3c], ecx
mov edx, dword [esp + 0x20]
and edx, 3
mov dword [esp + 0x40], edx
jbe 0x406500
mov esi, ecx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea ecx, [esi + ecx*2]
add ecx, ebx
inc eax
dec edx
jne 0x4064ea
mov dword [esp + 0x3c], ecx
push 0x53c
call fcn.0041a1b5
mov esi, eax
push 0x29e
mov dword [esp + 0x20], esi
call fcn.0041a1b5
movzx bp, byte [esp + 0x60]
mov ecx, 1
add esp, 8
cmp di, cx
mov dword [esp + 0x14], eax
mov word [esi], 0
jbe 0x406582
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [eax + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 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 0x406549
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
xor ebx, ebx
xor edx, edx
cmp esi, ebx
mov dword [esp + 0x38], edx
lea eax, [eax + edi - 1]
jbe 0x4065e1
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 0x40659e
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
jbe 0x406609
mov esi, edx
mov dword [esp + 0x50], ebx
shr esi, 0x1f
xor ebx, ebx
mov bl, byte [eax]
lea edx, [esi + edx*2]
mov esi, ebx
mov ebx, dword [esp + 0x50]
add edx, esi
dec eax
dec ecx
jne 0x4065e9
mov dword [esp + 0x38], edx
mov esi, dword [0x42a8f4]
mov ebp, edi
xor edi, edi
mov dword [esp + 0x28], ebx
mov ecx, dword [esi*4 + 0x42a568]
mov dword [esp + 0x34], ebx
cmp ecx, ebx
mov dword [esp + 0x44], ebx
mov eax, 1
je 0x40667e
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x406654
mov edx, dword [esp + 0x50]
and edx, 0xff
lea ebx, [edx - 1]
cmp ebx, esi
je 0x406654
cmp edx, dword [0x42a8f0]
jle 0x40667e
mov edx, dword [ecx]
add ecx, 5
mov dword [esp + 0x28], ecx
mov ecx, dword [0x42a7e8]
mov dword [esp + 0x44], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x40667e
mov dword [esp + 0x24], 8
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
test edx, edx
jbe 0x406862
jmp 0x406694
mov ebp, dword [esp + 0x40]
mov cl, byte [ebp]
inc ebp
test cl, cl
mov byte [esp + 0x50], cl
mov dword [esp + 0x40], ebp
je 0x40683b
mov esi, dword [esp + 0x2c]
test esi, esi
jne 0x406707
cmp cl, 0x37
jne 0x4066c8
mov cl, 0x49
mov dword [esp + 0x30], 5
add cl, 0xc5
mov byte [esp + 0x50], cl
jmp 0x40671b
cmp cl, 0x38
jne 0x4066e0
mov cl, 0x4f
mov dword [esp + 0x30], 5
add cl, 0xc5
mov byte [esp + 0x50], cl
jmp 0x40671b
cmp cl, 0x41
jb 0x4066f6
add cl, 0xc5
mov dword [esp + 0x30], 5
mov byte [esp + 0x50], cl
jmp 0x40671b
add cl, 0xcf
mov dword [esp + 0x30], 5
mov byte [esp + 0x50], cl
jmp 0x40671b
mov eax, dword [esp + 0x50]
mov dword [esp + 0x30], 1
and eax, 0xff
or ah, 1
mov esi, dword [esp + 0x2c]
test esi, esi
jne 0x406732
add eax, eax
test cl, 1
je 0x40672c
or al, 1
shr cl, 1
mov byte [esp + 0x50], cl
cmp eax, 0x100
jl 0x406810
mov ebp, dword [esp + 0x18]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebp + edx*2]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x1c], edi
mov byte [esi + ebx], al
mov eax, dword [esp + 0x34]
cmp eax, edx
jae 0x406807
mov eax, dword [esp + 0x28]
test eax, eax
je 0x406807
mov edx, dword [esp + 0x20]
mov esi, dword [eax]
cmp esi, edx
jne 0x406807
mov edx, dword [eax + 4]
mov esi, dword [esp + 0x3c]
cmp edx, esi
jne 0x406807
mov edx, dword [esp + 0x38]
mov esi, dword [eax + 8]
cmp esi, edx
jne 0x406807
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x4067f9
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
sub edi, edx
mov edx, dword [esp + 0x54]
sub ecx, edx
lea ebp, [ecx + 0xc]
mov edx, dword [esp + 0x54]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x4067ed
mov edx, dword [esp + 0x28]
mov cl, al
add cl, 0x77
mov dl, byte [eax + edx + 0x14]
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x4067ed
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x4067b5
jmp 0x4067f1
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x50]
mov edi, dword [esp + 0x1c]
cmp eax, edx
jne 0x406803
add edi, 0xffff
inc dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov eax, 1
mov esi, dword [esp + 0x30]
dec esi
mov dword [esp + 0x30], esi
je 0x40682b
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x40671b
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x406690
cmp eax, 1
je 0x406862
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x406862
add eax, eax
cmp eax, 0x100
jl 0x40684c
mov edi, dword [esp + 0x18]
xor esi, esi
mov si, word [edi + ecx*2]
mov byte [esi + ebx], al
mov al, byte [esp + 0x58]
xor edi, edi
cmp edx, edi
mov dword [esp + 0x1c], edi
mov byte [esp + 0x50], al
jbe 0x406916
xor ecx, ecx
jmp 0x406880
mov al, byte [esp + 0x50]
mov edx, dword [esp + 0x2c]
test edx, edx
jne 0x406892
mov dl, byte [ebx + ecx]
xor dl, al
mov byte [ebx + ecx], dl
jmp 0x4068ba
mov eax, dword [esp + 0x50]
mov esi, 0xa
and eax, 0xff
cdq
idiv esi
xor eax, eax
mov al, byte [ebx + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv esi
mov al, byte [esp + 0x50]
add dl, 0x30
mov byte [ebx + ecx], dl
add al, dl
xor ebp, ebp
test ecx, ecx
mov byte [esp + 0x50], al
jbe 0x4068f3
mov eax, 1
cmp ecx, eax
jbe 0x4068ee
xor edx, edx
mov dl, byte [ebx + ebp]
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 + 0x14]
add edi, edx
inc eax
cmp eax, ecx
jb 0x4068d6
inc ebp
cmp ebp, ecx
jb 0x4068c6
mov al, byte [ebx + ecx]
xor al, 0x6a
mov byte [ebx + ecx], al
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x1c], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x40687c
mov eax, dword [esp + 0x10]
xor edx, edx
test eax, eax
jbe 0x406951
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x18]
xor ecx, ecx
xor eax, eax
mov ax, word [ebp + ecx*2]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x40692a
cmp dword [0x42a440], edi
je 0x406969
mov dword [0x42a440], edi
mov dword [0x42a43c], 1
push ebx
call fcn.0041a1aa
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.0041a1aa
mov eax, dword [esp + 0x18]
mov edx, dword [0x42a7e8]
add esp, 8
mov dword [esp + 0x14], eax
mov ebp, eax
cmp dword [edx + 8], 3
jne 0x406a0a
lea esi, [ebp - 1]
xor cl, cl
xor eax, eax
test esi, esi
jle 0x4069b9
mov edx, dword [esp + 0x4c]
mov bl, cl
shr bl, 7
mov dl, byte [eax + edx]
add cl, cl
xor dl, al
xor dl, 0x6a
add dl, bl
add cl, dl
inc eax
cmp eax, esi
jl 0x40699d
mov esi, dword [esp + 0x4c]
mov dl, byte [esi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x4069de
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
xor eax, eax
xor ecx, ecx
add esi, 5
mov bl, cl
xor edx, edx
mov dl, byte [esi + ecx]
add bl, 5
and ebx, 0xff
xor edx, ebx
xor edx, 0x6a
shl eax, 5
add eax, edx
inc ecx
cmp ecx, 6
jl 0x4069e5
jmp 0x406aa2
mov edi, dword [esp + 0x4c]
xor esi, esi
xor eax, eax
mov dl, al
xor ecx, ecx
mov cl, byte [edi + eax + 0xd]
add dl, 0xd
and edx, 0xff
xor ecx, edx
lea edx, [esi + esi*4]
xor ecx, 0x6a
inc eax
cmp eax, 7
lea esi, [ecx + edx*2 - 0x30]
jl 0x406a12
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 0x406a39
and ecx, 0x7fffff
cmp esi, ecx
je 0x406a79
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
xor eax, eax
xor ecx, ecx
lea esi, [edi + 5]
mov bl, cl
xor edx, edx
mov dl, byte [esi + ecx]
add bl, 5
and ebx, 0xff
lea eax, [eax + eax*4]
xor edx, ebx
xor edx, 0x6a
inc ecx
cmp ecx, 8
lea eax, [edx + eax*2 - 0x30]
jl 0x406a80
xor dl, dl
xor ecx, ecx
mov byte [esp + 0x50], dl
mov edi, dword [esp + 0x4c]
shr dl, 7
mov bl, byte [ecx + edi]
xor bl, cl
xor bl, 0x6a
add bl, dl
mov dl, byte [esp + 0x50]
add dl, dl
add dl, bl
inc ecx
cmp ecx, 5
mov byte [esp + 0x50], dl
jl 0x406aaa
mov ecx, dword [0x42a7e8]
cmp dl, byte [ecx + 0x1d]
je 0x406aec
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov dword [0x42a4a8], esi
jmp 0x4076f1
cmp ebp, 8
jl 0x407733
lea edx, [ebp - 7]
push edx
call fcn.00419d50
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x10], ebx
je 0x407733
mov eax, dword [esp + 0x54]
lea ecx, [ebp - 8]
mov edx, ecx
mov edi, ebx
lea esi, [eax + 3]
mov eax, dword [esp + 0x58]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [ebx + ebp - 8], 0
mov edi, ebx
test eax, eax
mov eax, dword [0x42a7e8]
mov bp, word [eax]
je 0x40710a
mov cl, byte [eax + 0x53]
mov dx, word [eax + 0x1e]
shr ebp, 0xb
mov byte [esp + 0x54], cl
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov word [esp + 0x44], dx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x28], edx
je 0x406b98
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406bbb
cmp al, 0x5a
jg 0x406bbb
cmp al, 0x38
jle 0x406b8c
cmp al, 0x41
jl 0x406bbb
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x406b79
movsx eax, byte [ebx + 1]
lea ecx, [eax + eax*2]
lea edx, [eax + ecx*4]
movsx eax, byte [ebx]
lea ecx, [eax + edx*2 - 0x6db]
mov edx, dword [esp + 0x50]
cmp ecx, edx
mov dword [esp + 0x40], ecx
lea eax, [ebx + 2]
jbe 0x406bc2
xor eax, eax
jmp 0x4076dc
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x406c06
mov edi, dword [esp + 0x50]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406bfc
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406bef
inc eax
mov ecx, 1
dec edx
je 0x406bf8
cmp eax, edi
jb 0x406bdf
jmp 0x406bfc
cmp eax, edi
jb 0x406bd3
cmp ecx, 1
je 0x406c06
cmp eax, edi
jae 0x406c06
inc eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
cmp ecx, eax
jae 0x406c16
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406c27
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x28]
xor edx, edx
mov esi, edi
mov eax, ebx
shr esi, 2
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], esi
je 0x406c81
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 0x406c3e
mov dword [esp + 0x3c], edx
mov ecx, edi
and ecx, 3
mov dword [esp + 0x34], ecx
jbe 0x406ca2
mov esi, edx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea edx, [esi + edx*2]
add edx, ebx
inc eax
dec ecx
jne 0x406c8c
mov dword [esp + 0x3c], edx
push 0x53c
call fcn.0041a1b5
mov ebx, eax
push 0x29e
mov dword [esp + 0x24], ebx
call fcn.0041a1b5
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [ebx], 0
jne 0x406d30
movzx bp, byte [esp + 0x54]
mov ecx, 1
cmp word [esp + 0x58], cx
jbe 0x406da0
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [ebx + esi]
and edx, 0xffff
add edi, 2
xor eax, edx
cdq
idiv esi
mov eax, edx
and edx, 0xffff
xor eax, ecx
add ebp, eax
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [edi - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x58]
jb 0x406cf5
jmp 0x406da0
mov al, byte [esp + 0x54]
mov cl, 1
mov byte [esp + 0x50], al
mov al, byte [esp + 0x58]
cmp al, cl
jbe 0x406da0
mov ebp, dword [esp + 0x44]
mov esi, 1
and ebp, 0xff
lea edi, [ebx + 2]
mov edx, dword [esp + 0x50]
lea eax, [esi + ebp]
and edx, 0xff
add edi, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x50]
mov byte [esp + 0x44], dl
xor dl, cl
add al, dl
mov byte [esp + 0x50], al
mov eax, dword [esp + 0x44]
and eax, 0xff
mov dx, word [ebx + eax*2]
lea eax, [ebx + eax*2]
mov word [edi - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x58]
inc esi
cmp cl, al
jb 0x406d54
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x40]
xor edx, edx
test esi, esi
mov dword [esp + 0x38], edx
lea eax, [eax + ecx - 1]
jbe 0x406dfd
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 0x406dba
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
jbe 0x406e1b
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 0x406e05
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x42a8f4]
xor edi, edi
xor ebx, ebx
mov ecx, dword [esi*4 + 0x42a568]
lea eax, [edx + 2]
mov dword [esp + 0x44], eax
cmp ecx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x40], edi
mov eax, 1
mov dword [esp + 0x14], edi
je 0x406ea1
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x406e71
mov edx, dword [esp + 0x50]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x406e71
cmp edx, dword [0x42a8f0]
jle 0x406e9d
mov edx, dword [ecx]
mov edi, dword [esp + 0x14]
lea ebx, [ecx + 5]
mov ecx, dword [0x42a7e8]
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x406ea1
mov dword [esp + 0x24], 8
jmp 0x406ea1
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x58]
test edx, edx
jbe 0x407028
mov esi, dword [esp + 0x44]
mov cl, byte [esi]
inc esi
test cl, cl
mov dword [esp + 0x44], esi
je 0x406ff9
cmp cl, 0x37
jne 0x406ecc
mov cl, 0x49
add cl, 0xc5
jmp 0x406ee5
cmp cl, 0x38
jne 0x406ed8
mov cl, 0x4f
add cl, 0xc5
jmp 0x406ee5
cmp cl, 0x41
jb 0x406ee2
add cl, 0xc5
jmp 0x406ee5
add cl, 0xcf
mov dword [esp + 0x30], 5
add eax, eax
test cl, 1
je 0x406ef6
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x50], cl
jl 0x406fce
mov ebp, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebp + edx*2]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov byte [esi + edx], al
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x40]
jae 0x406fc5
test ebx, ebx
je 0x406fc5
mov edx, dword [ebx]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x406fc5
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
cmp eax, edx
jne 0x406fc5
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x406fc5
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x406fb7
mov edi, dword [esp + 0x28]
mov ecx, ebx
sub edi, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
lea ebp, [ecx + 0xc]
mov edx, dword [esp + 0x10]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x406fab
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [edi + esi]
cmp dl, cl
jne 0x406fab
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x406f77
jmp 0x406faf
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
mov cl, byte [esp + 0x50]
cmp eax, edx
jne 0x406fc1
add edi, 0xffff
inc dword [esp + 0x34]
mov edx, dword [esp + 0x58]
mov eax, 1
mov esi, dword [esp + 0x30]
dec esi
mov dword [esp + 0x30], esi
je 0x406fe9
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x406eed
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x406ead
cmp eax, 1
je 0x407028
mov edx, dword [esp + 0x58]
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x407028
add eax, eax
cmp eax, 0x100
jl 0x40700e
mov esi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [esi + ecx*2]
mov ecx, dword [esp + 0x18]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0x58]
mov dl, byte [esp + 0x54]
xor edi, edi
cmp ecx, edi
mov dword [esp + 0x14], edi
jbe 0x4070ac
xor eax, eax
mov ecx, dword [esp + 0x18]
xor ebp, ebp
mov bl, byte [eax + ecx]
xor bl, dl
add dl, bl
mov byte [eax + ecx], bl
test eax, eax
mov byte [esp + 0x50], dl
jbe 0x407089
mov ecx, 1
cmp eax, ecx
jbe 0x407084
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 0x407068
mov dl, byte [esp + 0x50]
inc ebp
cmp ebp, eax
jb 0x407054
mov ecx, dword [esp + 0x18]
mov bl, byte [eax + ecx]
xor bl, 0x6a
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x58]
inc eax
mov dword [esp + 0x14], eax
and eax, 0xffff
cmp eax, ecx
jb 0x40703c
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
xor edx, edx
test ecx, ecx
jbe 0x4070e6
mov esi, dword [esp + 0x4c]
xor ecx, ecx
xor eax, eax
mov ax, word [ebx + ecx*2]
mov al, byte [eax + ebp]
xor al, dl
mov byte [ecx + esi], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x58]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x4070c0
cmp dword [0x42a440], edi
je 0x4070fe
mov dword [0x42a440], edi
mov dword [0x42a43c], 1
push ebp
call fcn.0041a1aa
push ebx
jmp 0x4076cc
mov cl, byte [eax + 0x54]
mov dx, word [eax + 0x34]
shr ebp, 0xb
mov byte [esp + 0x54], cl
or ecx, 0xffffffff
xor eax, eax
and ebp, 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov word [esp + 0x44], dx
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x28], edx
je 0x40715f
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406bbb
cmp al, 0x5a
jg 0x406bbb
cmp al, 0x38
jle 0x407153
cmp al, 0x41
jl 0x406bbb
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x407134
movsx eax, byte [ebx + 1]
lea ecx, [eax + eax*2]
lea edx, [eax + ecx*4]
movsx eax, byte [ebx]
lea ecx, [eax + edx*2 - 0x6db]
mov edx, dword [esp + 0x50]
cmp ecx, edx
mov dword [esp + 0x40], ecx
lea eax, [ebx + 2]
jbe 0x407189
xor eax, eax
jmp 0x4076dc
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x4071cd
mov edi, dword [esp + 0x50]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x4071c3
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x4071b6
inc eax
mov ecx, 1
dec edx
je 0x4071bf
cmp eax, edi
jb 0x4071a6
jmp 0x4071c3
cmp eax, edi
jb 0x40719a
cmp ecx, 1
je 0x4071cd
cmp eax, edi
jae 0x4071cd
inc eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
cmp ecx, eax
jae 0x4071dd
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
mov eax, 0x29e
cmp ecx, eax
jbe 0x4071ee
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x28]
xor edx, edx
mov esi, edi
mov eax, ebx
shr esi, 2
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], esi
je 0x407248
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 0x407205
mov dword [esp + 0x3c], edx
mov ecx, edi
and ecx, 3
mov dword [esp + 0x34], ecx
jbe 0x407269
mov esi, edx
xor ebx, ebx
mov bl, byte [eax]
shr esi, 0x1f
lea edx, [esi + edx*2]
add edx, ebx
inc eax
dec ecx
jne 0x407253
mov dword [esp + 0x3c], edx
push 0x53c
call fcn.0041a1b5
mov ebx, eax
push 0x29e
mov dword [esp + 0x24], ebx
call fcn.0041a1b5
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [ebx], 0
jne 0x4072f7
movzx bp, byte [esp + 0x54]
mov ecx, 1
cmp word [esp + 0x58], cx
jbe 0x407367
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x44]
and ebx, 0xffff
mov esi, ecx
lea edi, [edx + 2]
mov edx, ebp
lea eax, [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 + 0x1c]
lea eax, [eax + edx*2]
mov dx, word [eax]
mov word [edi - 2], dx
mov word [eax], cx
inc ecx
inc esi
cmp cx, word [esp + 0x58]
jb 0x4072bc
jmp 0x407367
mov al, byte [esp + 0x54]
mov cl, 1
mov byte [esp + 0x50], al
mov al, byte [esp + 0x58]
cmp al, cl
jbe 0x407367
mov ebp, dword [esp + 0x44]
mov esi, 1
and ebp, 0xff
lea edi, [ebx + 2]
mov edx, dword [esp + 0x50]
lea eax, [esi + ebp]
and edx, 0xff
add edi, 2
xor eax, edx
cdq
idiv esi
mov al, byte [esp + 0x50]
mov byte [esp + 0x44], dl
xor dl, cl
add al, dl
mov byte [esp + 0x50], al
mov eax, dword [esp + 0x44]
and eax, 0xff
mov dx, word [ebx + eax*2]
lea eax, [ebx + eax*2]
mov word [edi - 2], dx
xor dx, dx
mov dl, cl
inc cl
mov word [eax], dx
mov al, byte [esp + 0x58]
inc esi
cmp cl, al
jb 0x40731b
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x40]
xor edx, edx
test esi, esi
mov dword [esp + 0x38], edx
lea eax, [eax + ecx - 1]
jbe 0x4073c4
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 0x407381
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
jbe 0x4073e2
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 0x4073cc
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x42a8f4]
xor edi, edi
xor ebx, ebx
mov ecx, dword [esi*4 + 0x42a568]
lea eax, [edx + 2]
mov dword [esp + 0x44], eax
cmp ecx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x40], edi
mov eax, 1
mov dword [esp + 0x14], edi
je 0x407468
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x407438
mov edx, dword [esp + 0x50]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x407438
cmp edx, dword [0x42a8f0]
jle 0x407464
mov edx, dword [ecx]
mov edi, dword [esp + 0x14]
lea ebx, [ecx + 5]
mov ecx, dword [0x42a7e8]
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x407468
mov dword [esp + 0x24], 8
jmp 0x407468
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x58]
test edx, edx
jbe 0x4075ef
mov esi, dword [esp + 0x44]
mov cl, byte [esi]
inc esi
test cl, cl
mov dword [esp + 0x44], esi
je 0x4075c0
cmp cl, 0x37
jne 0x407493
mov cl, 0x49
add cl, 0xc5
jmp 0x4074ac
cmp cl, 0x38
jne 0x40749f
mov cl, 0x4f
add cl, 0xc5
jmp 0x4074ac
cmp cl, 0x41
jb 0x4074a9
add cl, 0xc5
jmp 0x4074ac
add cl, 0xcf
mov dword [esp + 0x30], 5
add eax, eax
test cl, 1
je 0x4074bd
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x50], cl
jl 0x407595
mov ebp, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor esi, esi
inc edi
mov si, word [ebp + edx*2]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], edi
mov byte [esi + edx], al
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x40]
jae 0x40758c
test ebx, ebx
je 0x40758c
mov edx, dword [ebx]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x40758c
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
cmp eax, edx
jne 0x40758c
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x40758c
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x40757e
mov edi, dword [esp + 0x28]
mov ecx, ebx
sub edi, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
lea ebp, [ecx + 0xc]
mov edx, dword [esp + 0x10]
mov cl, al
add cl, 0x55
lea esi, [eax + edx]
mov dl, byte [esi + ebp]
xor dl, cl
mov cl, byte [esi]
cmp dl, cl
jne 0x407572
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [edi + esi]
cmp dl, cl
jne 0x407572
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x40753e
jmp 0x407576
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x50]
mov edi, dword [esp + 0x14]
cmp eax, edx
jne 0x407588
add edi, 0xffff
inc dword [esp + 0x34]
mov edx, dword [esp + 0x58]
mov eax, 1
mov esi, dword [esp + 0x30]
dec esi
mov dword [esp + 0x30], esi
je 0x4075b0
mov esi, edi
and esi, 0xffff
cmp esi, edx
jb 0x4074b4
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jb 0x407474
cmp eax, 1
je 0x4075ef
mov edx, dword [esp + 0x58]
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x4075ef
add eax, eax
cmp eax, 0x100
jl 0x4075d5
mov esi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [esi + ecx*2]
mov ecx, dword [esp + 0x18]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0x58]
mov dl, byte [esp + 0x54]
xor edi, edi
cmp ecx, edi
mov dword [esp + 0x14], edi
jbe 0x407673
xor eax, eax
mov ecx, dword [esp + 0x18]
xor ebp, ebp
mov bl, byte [ecx + eax]
xor bl, dl
add dl, bl
mov byte [ecx + eax], bl
test eax, eax
mov byte [esp + 0x50], dl
jbe 0x407650
mov ecx, 1
cmp eax, ecx
jbe 0x40764b
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 0x40762f
mov dl, byte [esp + 0x50]
inc ebp
cmp ebp, eax
jb 0x40761b
mov ecx, dword [esp + 0x18]
mov bl, byte [ecx + eax]
xor bl, 0x6a
mov byte [ecx + eax], bl
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x58]
inc eax
mov dword [esp + 0x14], eax
and eax, 0xffff
cmp eax, ecx
jb 0x407603
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
xor edx, edx
test ecx, ecx
jbe 0x4076ad
mov ebp, dword [esp + 0x4c]
xor ecx, ecx
xor eax, eax
mov ax, word [esi + ecx*2]
mov al, byte [eax + ebx]
xor al, dl
mov byte [ecx + ebp], al
and eax, 0xff
add edi, eax
mov eax, dword [esp + 0x58]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x407687
cmp dword [0x42a440], edi
je 0x4076c5
mov dword [0x42a440], edi
mov dword [0x42a43c], 1
push ebx
call fcn.0041a1aa
push esi
call fcn.0041a1aa
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x60]
add esp, 8
push ebx
mov dword [esp + 0x18], eax
call fcn.00419eb3
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x18]
add esp, 4
test ebp, ebp
je 0x407733
mov ecx, dword [0x42a7e8]
mov edx, dword [ecx + 8]
test edx, edx
je 0x407733
mov edx, dword [0x42a4a8]
xor ecx, ecx
mov byte [edx], 8
xor edx, edx
mov esi, 0xa
div esi
mov esi, dword [0x42a4a8]
sub esi, ecx
add dl, 0x30
inc ecx
cmp ecx, 8
mov byte [esi + 8], dl
jl 0x40770d
mov eax, dword [0x42a4a8]
mov byte [eax + 9], 0
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret