Function at 0x405f50
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 [0x42ba50]
repne scasb al, byte es:[edi]
mov eax, dword [edx + 8]
not ecx
dec ecx
test eax, eax
mov ebp, ecx
je 0x406d4c
cmp eax, 2
jbe 0x4079b0
cmp eax, 4
ja 0x4079b0
cmp ebp, 0x10
jl 0x4079b0
cmp ebp, 0x18
jg 0x4079b0
mov ecx, dword [esp + 0x58]
mov edi, ebx
test ecx, ecx
je 0x4065dc
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 + 0x38], esi
mov edi, ecx
mov ecx, eax
mov dword [esp + 0x20], edi
je 0x406027
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x40603f
cmp al, 0x5a
jg 0x40603f
test esi, esi
je 0x406013
cmp al, 0x39
jg 0x40603f
jmp 0x40601b
cmp al, 0x38
jle 0x40601b
cmp al, 0x41
jl 0x40603f
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edi
jb 0x405ffe
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 0x40604c
xor eax, eax
mov ebp, eax
mov dword [esp + 0x14], ebp
jmp 0x406be1
mov edi, ebp
test esi, esi
mov dword [esp + 0x10], edi
jne 0x4060bb
mov edi, dword [esp + 0x50]
xor eax, eax
test edi, edi
mov esi, ebx
mov ecx, 1
jbe 0x40609a
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 ebp, eax
mov dword [esp + 0x10], edi
jae 0x4060aa
mov edi, ebp
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x4060bb
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 + 0x2c], ecx
mov dword [esp + 0x50], esi
je 0x406113
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 0x4060d0
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x20]
and edx, 3
mov dword [esp + 0x40], edx
jbe 0x406136
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 0x406120
mov dword [esp + 0x2c], ecx
push 0x53c
call fcn.0041b005
mov esi, eax
push 0x29e
mov dword [esp + 0x24], esi
call fcn.0041b005
movzx bp, byte [esp + 0x60]
mov ecx, 1
add esp, 8
cmp di, cx
mov dword [esp + 0x14], eax
mov word [esi], 0
jbe 0x4061b8
mov eax, dword [esp + 0x1c]
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 + 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 + 0x10]
jb 0x40617f
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
xor ebx, ebx
xor ebp, ebp
cmp esi, ebx
mov dword [esp + 0x18], ebp
lea eax, [eax + edi - 1]
jbe 0x406217
mov ecx, ebp
xor edx, edx
mov dl, byte [eax]
shr ecx, 0x1f
lea ecx, [ecx + ebp*2]
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 ebp, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add ebp, ecx
dec eax
dec esi
jne 0x4061d4
mov dword [esp + 0x18], ebp
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
jbe 0x406235
mov edx, ebp
shr edx, 0x1f
lea ebp, [edx + ebp*2]
xor edx, edx
mov dl, byte [eax]
add ebp, edx
dec eax
dec ecx
jne 0x40621f
mov dword [esp + 0x18], ebp
mov esi, dword [0x42bb5c]
mov dword [esp + 0x40], edi
xor edi, edi
mov dword [esp + 0x30], ebx
mov ecx, dword [esi*4 + 0x42b7d0]
mov dword [esp + 0x44], ebx
cmp ecx, ebx
mov eax, 1
mov dword [esp + 0x50], edi
je 0x4062ba
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x3c], dl
je 0x406282
mov edx, dword [esp + 0x3c]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x406282
cmp edx, dword [0x42bb58]
jle 0x4062b2
mov edx, dword [ecx]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
lea ebx, [ecx + 5]
mov ecx, dword [0x42ba50]
mov dword [esp + 0x44], edx
mov dword [esp + 0x28], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x4062ba
mov dword [esp + 0x28], 8
jmp 0x4062ba
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
test esi, esi
jbe 0x40649e
mov ecx, dword [esp + 0x40]
mov dl, byte [ecx]
inc ecx
test dl, dl
mov byte [esp + 0x24], dl
mov dword [esp + 0x40], ecx
je 0x406473
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x40633c
cmp dl, 0x37
jne 0x4062fd
mov dl, 0x49
mov dword [esp + 0x34], 5
add dl, 0xc5
mov byte [esp + 0x24], dl
jmp 0x406350
cmp dl, 0x38
jne 0x406315
mov dl, 0x4f
mov dword [esp + 0x34], 5
add dl, 0xc5
mov byte [esp + 0x24], dl
jmp 0x406350
cmp dl, 0x41
jb 0x40632b
add dl, 0xc5
mov dword [esp + 0x34], 5
mov byte [esp + 0x24], dl
jmp 0x406350
add dl, 0xcf
mov dword [esp + 0x34], 5
mov byte [esp + 0x24], dl
jmp 0x406350
mov eax, dword [esp + 0x24]
mov dword [esp + 0x34], 1
and eax, 0xff
or ah, 1
mov ecx, 8
sub ecx, dword [esp + 0x54]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x406374
add eax, eax
test dl, 1
je 0x40636e
or al, 1
shr dl, 1
mov byte [esp + 0x24], dl
cmp eax, 0x100
jl 0x406448
mov esi, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], edi
mov byte [ecx + edx], al
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x44]
jae 0x40643b
test ebx, ebx
je 0x40643b
mov ecx, dword [esp + 0x20]
mov eax, dword [ebx]
cmp eax, ecx
jne 0x40642f
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x2c]
cmp edx, eax
jne 0x40642f
cmp dword [ebx + 8], ebp
jne 0x40642f
mov ecx, dword [esp + 0x28]
xor eax, eax
test ecx, ecx
jle 0x406425
mov edi, dword [esp + 0x20]
sub edi, ecx
mov ecx, dword [esp + 0x3c]
lea ebp, [ebx + ecx + 4]
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 0x406419
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x406419
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
jl 0x4063e5
jmp 0x40641d
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
cmp eax, ecx
jne 0x40642f
add edi, 0xffff
mov ecx, dword [esp + 0x30]
inc ecx
add ebx, 0x1c
mov dword [esp + 0x30], ecx
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0x24]
mov eax, 1
mov ecx, dword [esp + 0x34]
dec ecx
mov dword [esp + 0x34], ecx
je 0x406463
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x40635d
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x4062c6
cmp eax, 1
je 0x40649e
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jae 0x40649e
add eax, eax
cmp eax, 0x100
jl 0x406484
mov edi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [edi + ecx*2]
mov ecx, dword [esp + 0x14]
mov byte [edx + ecx], al
mov bl, byte [esp + 0x58]
xor edi, edi
cmp esi, edi
mov dword [esp + 0x50], edi
mov byte [esp + 0x54], bl
jbe 0x406562
xor ecx, ecx
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x4064cc
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, bl
mov byte [eax + ecx], dl
jmp 0x4064f9
mov eax, dword [esp + 0x54]
mov esi, 0xa
and eax, 0xff
mov ebp, 0xa
cdq
idiv esi
mov esi, dword [esp + 0x14]
xor eax, eax
mov al, byte [esi + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv ebp
add dl, 0x30
mov byte [esi + ecx], dl
add bl, dl
xor ebp, ebp
test ecx, ecx
mov byte [esp + 0x54], bl
jbe 0x40653a
mov eax, 1
cmp ecx, eax
jbe 0x406531
mov esi, dword [esp + 0x14]
xor edx, edx
mov dl, byte [esi + ebp]
mov esi, edx
mov ebx, dword [esp + 0x14]
xor edx, edx
mov dl, byte [eax + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc eax
cmp eax, ecx
jb 0x406519
inc ebp
cmp ebp, ecx
jb 0x406505
mov bl, byte [esp + 0x54]
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, 0x6a
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x50], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x4064b6
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
xor edx, edx
test eax, eax
jbe 0x4065a0
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 + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x40657a
cmp dword [0x42b6a4], edi
je 0x4065b8
mov dword [0x42b6a4], edi
mov dword [0x42b6a0], 1
push ebp
call fcn.0041affa
push ebx
call fcn.0041affa
mov eax, dword [esp + 0x18]
mov edx, dword [0x42ba50]
mov ebp, eax
add esp, 8
mov dword [esp + 0x14], ebp
jmp 0x406be1
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 + 0x24], edi
je 0x406637
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x40664f
cmp al, 0x5a
jg 0x40664f
test esi, esi
je 0x406623
cmp al, 0x39
jg 0x40664f
jmp 0x40662b
cmp al, 0x38
jle 0x40662b
cmp al, 0x41
jl 0x40664f
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edi
jb 0x40660e
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 0x406656
xor eax, eax
jmp 0x406bdb
mov edi, ebp
test esi, esi
mov dword [esp + 0x10], edi
jne 0x4066c5
mov edi, dword [esp + 0x50]
xor eax, eax
test edi, edi
mov esi, ebx
mov ecx, 1
jbe 0x4066a4
mov dl, byte [esi]
inc esi
test dl, dl
je 0x40669a
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x40668d
inc eax
mov ecx, 1
dec edx
je 0x406696
cmp eax, edi
jb 0x40667d
jmp 0x40669a
cmp eax, edi
jb 0x406671
cmp ecx, 1
je 0x4066a4
cmp eax, edi
jae 0x4066a4
inc eax
mov edi, eax
cmp ebp, eax
mov dword [esp + 0x10], edi
jae 0x4066b4
mov edi, ebp
mov dword [esp + 0x10], edi
cmp edi, 0x29e
jbe 0x4066c5
mov edi, 0x29e
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0x24]
xor ecx, ecx
shr esi, 2
mov eax, ebx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x50], esi
je 0x40671d
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 0x4066da
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x24]
and edx, 3
mov dword [esp + 0x40], edx
jbe 0x406740
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 0x40672a
mov dword [esp + 0x38], ecx
push 0x53c
call fcn.0041b005
mov esi, eax
push 0x29e
mov dword [esp + 0x24], esi
call fcn.0041b005
movzx bp, byte [esp + 0x60]
mov ecx, 1
add esp, 8
cmp di, cx
mov dword [esp + 0x14], eax
mov word [esi], 0
jbe 0x4067c2
mov eax, dword [esp + 0x1c]
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 + 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 + 0x10]
jb 0x406789
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x50]
xor ebx, ebx
xor ebp, ebp
cmp esi, ebx
mov dword [esp + 0x18], ebp
lea eax, [eax + edi - 1]
jbe 0x406821
mov ecx, ebp
xor edx, edx
mov dl, byte [eax]
shr ecx, 0x1f
lea ecx, [ecx + ebp*2]
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 ebp, [edx + ecx*2]
xor ecx, ecx
mov cl, byte [eax]
add ebp, ecx
dec eax
dec esi
jne 0x4067de
mov dword [esp + 0x18], ebp
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
jbe 0x40683f
mov edx, ebp
shr edx, 0x1f
lea ebp, [edx + ebp*2]
xor edx, edx
mov dl, byte [eax]
add ebp, edx
dec eax
dec ecx
jne 0x406829
mov dword [esp + 0x18], ebp
mov esi, dword [0x42bb5c]
mov dword [esp + 0x44], edi
xor edi, edi
mov dword [esp + 0x34], ebx
mov ecx, dword [esi*4 + 0x42b7d0]
mov dword [esp + 0x40], ebx
cmp ecx, ebx
mov eax, 1
mov dword [esp + 0x50], edi
je 0x4068c4
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x3c], dl
je 0x40688c
mov edx, dword [esp + 0x3c]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x40688c
cmp edx, dword [0x42bb58]
jle 0x4068bc
mov edx, dword [ecx]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
lea ebx, [ecx + 5]
mov ecx, dword [0x42ba50]
mov dword [esp + 0x40], edx
mov dword [esp + 0x28], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x4068c4
mov dword [esp + 0x28], 8
jmp 0x4068c4
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
test esi, esi
jbe 0x406aa8
mov ecx, dword [esp + 0x44]
mov dl, byte [ecx]
inc ecx
test dl, dl
mov byte [esp + 0x20], dl
mov dword [esp + 0x44], ecx
je 0x406a7d
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jne 0x406946
cmp dl, 0x37
jne 0x406907
mov dl, 0x49
mov dword [esp + 0x30], 5
add dl, 0xc5
mov byte [esp + 0x20], dl
jmp 0x40695a
cmp dl, 0x38
jne 0x40691f
mov dl, 0x4f
mov dword [esp + 0x30], 5
add dl, 0xc5
mov byte [esp + 0x20], dl
jmp 0x40695a
cmp dl, 0x41
jb 0x406935
add dl, 0xc5
mov dword [esp + 0x30], 5
mov byte [esp + 0x20], dl
jmp 0x40695a
add dl, 0xcf
mov dword [esp + 0x30], 5
mov byte [esp + 0x20], dl
jmp 0x40695a
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], 1
and eax, 0xff
or ah, 1
mov ecx, 8
sub ecx, dword [esp + 0x54]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jne 0x40697e
add eax, eax
test dl, 1
je 0x406978
or al, 1
shr dl, 1
mov byte [esp + 0x20], dl
cmp eax, 0x100
jl 0x406a52
mov esi, dword [esp + 0x1c]
mov edx, edi
and edx, 0xffff
xor ecx, ecx
inc edi
mov cx, word [esi + edx*2]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], edi
mov byte [ecx + edx], al
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x40]
jae 0x406a45
test ebx, ebx
je 0x406a45
mov ecx, dword [esp + 0x24]
mov eax, dword [ebx]
cmp eax, ecx
jne 0x406a39
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x406a39
cmp dword [ebx + 8], ebp
jne 0x406a39
mov ecx, dword [esp + 0x28]
xor eax, eax
test ecx, ecx
jle 0x406a2f
mov edi, dword [esp + 0x24]
sub edi, ecx
mov ecx, dword [esp + 0x3c]
lea ebp, [ebx + ecx + 4]
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 0x406a23
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x406a23
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
jl 0x4069ef
jmp 0x406a27
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
cmp eax, ecx
jne 0x406a39
add edi, 0xffff
mov ecx, dword [esp + 0x34]
inc ecx
add ebx, 0x1c
mov dword [esp + 0x34], ecx
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0x20]
mov eax, 1
mov ecx, dword [esp + 0x30]
dec ecx
mov dword [esp + 0x30], ecx
je 0x406a6d
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x406967
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x4068d0
cmp eax, 1
je 0x406aa8
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jae 0x406aa8
add eax, eax
cmp eax, 0x100
jl 0x406a8e
mov edi, dword [esp + 0x1c]
xor edx, edx
mov dx, word [edi + ecx*2]
mov ecx, dword [esp + 0x14]
mov byte [edx + ecx], al
mov bl, byte [esp + 0x58]
xor edi, edi
cmp esi, edi
mov dword [esp + 0x50], edi
mov byte [esp + 0x54], bl
jbe 0x406b6c
xor ecx, ecx
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x406ad6
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, bl
mov byte [eax + ecx], dl
jmp 0x406b03
mov eax, dword [esp + 0x54]
mov esi, 0xa
and eax, 0xff
mov ebp, 0xa
cdq
idiv esi
mov esi, dword [esp + 0x14]
xor eax, eax
mov al, byte [esi + ecx]
sub eax, edx
sub eax, 0x26
cdq
idiv ebp
add dl, 0x30
mov byte [esi + ecx], dl
add bl, dl
xor ebp, ebp
test ecx, ecx
mov byte [esp + 0x54], bl
jbe 0x406b44
mov eax, 1
cmp ecx, eax
jbe 0x406b3b
mov esi, dword [esp + 0x14]
xor edx, edx
mov dl, byte [esi + ebp]
mov esi, edx
mov ebx, dword [esp + 0x14]
xor edx, edx
mov dl, byte [eax + ebx]
mov ebx, esi
shr edx, 1
shr ebx, 1
xor edx, ebx
add edi, edx
inc eax
cmp eax, ecx
jb 0x406b23
inc ebp
cmp ebp, ecx
jb 0x406b0f
mov bl, byte [esp + 0x54]
mov eax, dword [esp + 0x14]
mov dl, byte [eax + ecx]
xor dl, 0x6a
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x50], ecx
and ecx, 0xffff
cmp ecx, eax
jb 0x406ac0
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
xor edx, edx
test eax, eax
jbe 0x406baa
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 + 0x10]
inc edx
mov ecx, edx
and ecx, 0xffff
cmp ecx, eax
jb 0x406b84
cmp dword [0x42b6a4], edi
je 0x406bc2
mov dword [0x42b6a4], edi
mov dword [0x42b6a0], 1
push ebp
call fcn.0041affa
push ebx
call fcn.0041affa
mov eax, dword [esp + 0x18]
mov edx, dword [0x42ba50]
add esp, 8
mov dword [esp + 0x14], eax
mov ebp, eax
cmp dword [edx + 8], 3
jne 0x406c5f
lea esi, [ebp - 1]
xor cl, cl
xor eax, eax
test esi, esi
jle 0x406c0e
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 0x406bf2
mov esi, dword [esp + 0x4c]
mov dl, byte [esi + ebp - 1]
xor dl, al
xor dl, 0x6a
cmp dl, cl
je 0x406c33
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 0x406c3a
jmp 0x406cf7
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 0x406c67
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 0x406c8e
and ecx, 0x7fffff
cmp esi, ecx
je 0x406cce
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 0x406cd5
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 0x406cff
mov ecx, dword [0x42ba50]
cmp dl, byte [ecx + 0x1d]
je 0x406d41
pop edi
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov dword [0x42b710], esi
jmp 0x40796e
cmp ebp, 8
jl 0x4079b0
lea edx, [ebp - 7]
push edx
call fcn.0041aba0
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x10], ebx
je 0x4079b0
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 [0x42ba50]
mov bp, word [eax]
je 0x407373
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 0x406ded
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406e10
cmp al, 0x5a
jg 0x406e10
cmp al, 0x38
jle 0x406de1
cmp al, 0x41
jl 0x406e10
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x406dce
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 0x406e17
xor eax, eax
jmp 0x407959
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x406e5b
mov edi, dword [esp + 0x50]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x406e51
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x406e44
inc eax
mov ecx, 1
dec edx
je 0x406e4d
cmp eax, edi
jb 0x406e34
jmp 0x406e51
cmp eax, edi
jb 0x406e28
cmp ecx, 1
je 0x406e5b
cmp eax, edi
jae 0x406e5b
inc eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
cmp ecx, eax
jae 0x406e6b
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
mov eax, 0x29e
cmp ecx, eax
jbe 0x406e7c
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 0x406ed6
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 0x406e93
mov dword [esp + 0x3c], edx
mov ecx, edi
and ecx, 3
mov dword [esp + 0x34], ecx
jbe 0x406ef7
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 0x406ee1
mov dword [esp + 0x3c], edx
push 0x53c
call fcn.0041b005
mov ebx, eax
push 0x29e
mov dword [esp + 0x24], ebx
call fcn.0041b005
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [ebx], 0
jne 0x406f85
movzx bp, byte [esp + 0x54]
mov ecx, 1
cmp word [esp + 0x58], cx
jbe 0x406ff5
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 0x406f4a
jmp 0x406ff5
mov al, byte [esp + 0x54]
mov cl, 1
mov byte [esp + 0x50], al
mov al, byte [esp + 0x58]
cmp al, cl
jbe 0x406ff5
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 0x406fa9
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 0x407052
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 0x40700f
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
jbe 0x407070
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 0x40705a
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x42bb5c]
xor edi, edi
xor ebx, ebx
mov ecx, dword [esi*4 + 0x42b7d0]
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 0x4070f6
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x4070c6
mov edx, dword [esp + 0x50]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x4070c6
cmp edx, dword [0x42bb58]
jle 0x4070f2
mov edx, dword [ecx]
mov edi, dword [esp + 0x14]
lea ebx, [ecx + 5]
mov ecx, dword [0x42ba50]
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x4070f6
mov dword [esp + 0x24], 8
jmp 0x4070f6
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x58]
test esi, esi
jbe 0x407291
mov edx, dword [esp + 0x44]
mov cl, byte [edx]
inc edx
test cl, cl
mov dword [esp + 0x44], edx
je 0x407262
cmp cl, 0x37
jne 0x407121
mov cl, 0x49
add cl, 0xc5
jmp 0x40713a
cmp cl, 0x38
jne 0x40712d
mov cl, 0x4f
add cl, 0xc5
jmp 0x40713a
cmp cl, 0x41
jb 0x407137
add cl, 0xc5
jmp 0x40713a
add cl, 0xcf
mov ebp, dword [esp + 0x10]
mov edx, 8
sub edx, ebp
mov dword [esp + 0x2c], 5
mov dword [esp + 0x30], edx
add eax, eax
test cl, 1
je 0x40715a
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x50], cl
jl 0x407237
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 0x40722e
test ebx, ebx
je 0x40722e
mov edx, dword [ebx]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x407222
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
cmp eax, edx
jne 0x407222
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x407222
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x407218
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
sub edi, edx
lea ebp, [ecx + ebx + 4]
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 0x40720c
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [edi + esi]
cmp dl, cl
jne 0x40720c
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x4071d8
jmp 0x407210
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
mov cl, byte [esp + 0x50]
cmp eax, edx
jne 0x407222
add edi, 0xffff
mov edx, dword [esp + 0x34]
inc edx
add ebx, 0x1c
mov dword [esp + 0x34], edx
mov esi, dword [esp + 0x58]
mov eax, 1
mov edx, dword [esp + 0x2c]
dec edx
mov dword [esp + 0x2c], edx
je 0x407252
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x407151
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x407102
cmp eax, 1
je 0x407291
mov edx, dword [esp + 0x58]
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x407291
add eax, eax
cmp eax, 0x100
jl 0x407277
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 0x407315
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 0x4072f2
mov ecx, 1
cmp eax, ecx
jbe 0x4072ed
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 0x4072d1
mov dl, byte [esp + 0x50]
inc ebp
cmp ebp, eax
jb 0x4072bd
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 0x4072a5
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
xor edx, edx
test ecx, ecx
jbe 0x40734f
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 0x407329
cmp dword [0x42b6a4], edi
je 0x407367
mov dword [0x42b6a4], edi
mov dword [0x42b6a0], 1
push ebp
call fcn.0041affa
push ebx
jmp 0x407949
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 0x4073c8
mov al, byte [eax + ebx]
cmp al, 0x30
jl 0x406e10
cmp al, 0x5a
jg 0x406e10
cmp al, 0x38
jle 0x4073bc
cmp al, 0x41
jl 0x406e10
inc ecx
mov eax, ecx
and eax, 0xffff
cmp eax, edx
jb 0x40739d
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 0x4073f2
xor eax, eax
jmp 0x407959
mov esi, eax
xor eax, eax
test edx, edx
mov ecx, 1
jbe 0x407436
mov edi, dword [esp + 0x50]
mov dl, byte [esi]
inc esi
test dl, dl
je 0x40742c
mov edx, 5
add ecx, ecx
cmp ecx, 0x100
jl 0x40741f
inc eax
mov ecx, 1
dec edx
je 0x407428
cmp eax, edi
jb 0x40740f
jmp 0x40742c
cmp eax, edi
jb 0x407403
cmp ecx, 1
je 0x407436
cmp eax, edi
jae 0x407436
inc eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
cmp ecx, eax
jae 0x407446
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
mov eax, 0x29e
cmp ecx, eax
jbe 0x407457
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 0x4074b1
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 0x40746e
mov dword [esp + 0x3c], edx
mov ecx, edi
and ecx, 3
mov dword [esp + 0x34], ecx
jbe 0x4074d2
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 0x4074bc
mov dword [esp + 0x3c], edx
push 0x53c
call fcn.0041b005
mov ebx, eax
push 0x29e
mov dword [esp + 0x24], ebx
call fcn.0041b005
add esp, 8
mov dword [esp + 0x18], eax
test ebp, ebp
mov word [ebx], 0
jne 0x407560
movzx bp, byte [esp + 0x54]
mov ecx, 1
cmp word [esp + 0x58], cx
jbe 0x4075d0
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 0x407525
jmp 0x4075d0
mov al, byte [esp + 0x54]
mov cl, 1
mov byte [esp + 0x50], al
mov al, byte [esp + 0x58]
cmp al, cl
jbe 0x4075d0
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 0x407584
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 0x40762d
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 0x4075ea
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
jbe 0x40764b
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 0x407635
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
mov esi, dword [0x42bb5c]
xor edi, edi
xor ebx, ebx
mov ecx, dword [esi*4 + 0x42b7d0]
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 0x4076d1
mov dl, byte [ecx + 4]
sub dl, 0xe
mov byte [esp + 0x50], dl
je 0x4076a1
mov edx, dword [esp + 0x50]
and edx, 0xff
lea edi, [edx - 1]
cmp edi, esi
je 0x4076a1
cmp edx, dword [0x42bb58]
jle 0x4076cd
mov edx, dword [ecx]
mov edi, dword [esp + 0x14]
lea ebx, [ecx + 5]
mov ecx, dword [0x42ba50]
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], 5
mov edx, dword [ecx + 8]
test edx, edx
jne 0x4076d1
mov dword [esp + 0x24], 8
jmp 0x4076d1
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x58]
test esi, esi
jbe 0x40786c
mov edx, dword [esp + 0x44]
mov cl, byte [edx]
inc edx
test cl, cl
mov dword [esp + 0x44], edx
je 0x40783d
cmp cl, 0x37
jne 0x4076fc
mov cl, 0x49
add cl, 0xc5
jmp 0x407715
cmp cl, 0x38
jne 0x407708
mov cl, 0x4f
add cl, 0xc5
jmp 0x407715
cmp cl, 0x41
jb 0x407712
add cl, 0xc5
jmp 0x407715
add cl, 0xcf
mov ebp, dword [esp + 0x10]
mov edx, 8
sub edx, ebp
mov dword [esp + 0x2c], 5
mov dword [esp + 0x30], edx
add eax, eax
test cl, 1
je 0x407735
or al, 1
shr cl, 1
cmp eax, 0x100
mov byte [esp + 0x50], cl
jl 0x407812
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 0x407809
test ebx, ebx
je 0x407809
mov edx, dword [ebx]
mov eax, dword [esp + 0x28]
cmp edx, eax
jne 0x4077fd
mov eax, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
cmp eax, edx
jne 0x4077fd
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x38]
cmp edx, eax
jne 0x4077fd
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x4077f3
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
sub edi, edx
lea ebp, [ecx + ebx + 4]
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 0x4077e7
mov dl, byte [eax + ebx + 0x14]
mov cl, al
add cl, 0x77
xor dl, cl
mov cl, byte [esi + edi]
cmp dl, cl
jne 0x4077e7
mov edx, dword [esp + 0x24]
inc eax
cmp eax, edx
jl 0x4077b3
jmp 0x4077eb
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x50]
mov edi, dword [esp + 0x14]
cmp eax, edx
jne 0x4077fd
add edi, 0xffff
mov edx, dword [esp + 0x34]
inc edx
add ebx, 0x1c
mov dword [esp + 0x34], edx
mov esi, dword [esp + 0x58]
mov eax, 1
mov edx, dword [esp + 0x2c]
dec edx
mov dword [esp + 0x2c], edx
je 0x40782d
mov edx, edi
and edx, 0xffff
cmp edx, esi
jb 0x40772c
mov ecx, edi
and ecx, 0xffff
cmp ecx, esi
jb 0x4076dd
cmp eax, 1
je 0x40786c
mov edx, dword [esp + 0x58]
mov ecx, edi
and ecx, 0xffff
cmp ecx, edx
jae 0x40786c
add eax, eax
cmp eax, 0x100
jl 0x407852
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 0x4078f0
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 0x4078cd
mov ecx, 1
cmp eax, ecx
jbe 0x4078c8
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 0x4078ac
mov dl, byte [esp + 0x50]
inc ebp
cmp ebp, eax
jb 0x407898
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 0x407880
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
xor edx, edx
test ecx, ecx
jbe 0x40792a
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 0x407904
cmp dword [0x42b6a4], edi
je 0x407942
mov dword [0x42b6a4], edi
mov dword [0x42b6a0], 1
push ebx
call fcn.0041affa
push esi
call fcn.0041affa
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x60]
add esp, 8
push ebx
mov dword [esp + 0x18], eax
call fcn.0041ad03
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x18]
add esp, 4
test ebp, ebp
je 0x4079b0
mov ecx, dword [0x42ba50]
mov edx, dword [ecx + 8]
test edx, edx
je 0x4079b0
mov edx, dword [0x42b710]
xor ecx, ecx
mov byte [edx], 8
xor edx, edx
mov esi, 0xa
div esi
mov esi, dword [0x42b710]
sub esi, ecx
add dl, 0x30
inc ecx
cmp ecx, 8
mov byte [esi + 8], dl
jl 0x40798a
mov eax, dword [0x42b710]
mov byte [eax + 9], 0
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret