Function at 0x421289
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x470
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x68], 0x8b108513
mov dword [esp + 0x6c], 0x8fef89e1
mov dword [esp + 0x70], 0xb3de8d1d
mov dword [esp + 0x74], 0xb728b1d9
mov dword [esp + 0x78], 0xbbb4b5dd
mov dword [esp + 0x7c], 0
mov word [esp + 0x80], 0
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x24]
cmp eax, 0x19
ja 0x420e5a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
movzx edx, byte [esp + ecx + 0x68]
lea ecx, [eax + edx]
add ecx, 0x75ec4715
add eax, 0x75ec4715
and eax, edx
add eax, eax
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
add al, 0x6d
mov ecx, dword [esp + 0x24]
mov byte [esp + ecx + 0x68], al
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, 0x1a
jb 0x420e10
lea esi, [esp + 0x68]
lea ecx, [esp + 0x50]
push esi
call fcn.00434080
shr eax, 0x1f
jmp dword [eax*4 + 0x4416b4]
lea ecx, [esp + 0x50]
push 0x410
call fcn.004342f0
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4416cc]
xor ebx, ebx
jmp dword [0x4416e0]
xor ebx, ebx
jmp dword [0x4416c4]
mov dword [esp + 0x68], 0x44635a4d
mov dword [esp + 0x6c], 0x5644614e
mov dword [esp + 0x70], 0x5a5d4361
mov dword [esp + 0x74], 0x6f405c7d
mov dword [esp + 0x78], 0x4e7b706c
mov dword [esp + 0x7c], 0x57767c75
mov dword [esp + 0x80], 0x2c597458
mov dword [esp + 0x84], 0x28072e13
mov dword [esp + 0x88], 0x121c10
mov dword [esp + 0x8c], 0x20037911
mov dword [esp + 0x90], 0x537c0501
mov dword [esp + 0x94], 0
mov byte [esp + 0x98], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x30
ja 0x420f8a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x68]
lea edx, [eax + ecx]
add edx, 0xb69fc6a5
add eax, 0xb69fc6a5
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
add al, 0x7d
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x68], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x31
jb 0x420f40
lea eax, [esp + 0x24]
lea ecx, [esp + 0x50]
push 0
push 0x2b
push esi
push eax
call fcn.004348c0
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
xor eax, eax
cmp ebx, edi
sete al
jmp dword [eax*4 + 0x4416e4]
mov eax, edi
sub eax, ebx
sar eax, 2
mov ecx, eax
and ecx, 0xfffffbde
mov edx, eax
and edx, 0x421
or eax, 0x421
imul eax, edx
xor edx, 0x421
imul edx, ecx
add eax, edx
push eax
call fcn.00408c60
add esp, 4
mov dword [esp + 0x64], 0
xor ecx, ecx
cmp ebx, edi
setne cl
mov dword [esp + 0x44], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x10], edi
jmp dword [ecx*4 + 0x4416ec]
add ebx, 4
xor eax, eax
cmp ebx, edi
setne al
jmp dword [eax*4 + 0x4416ec]
mov esi, dword [ebx]
push 0x400
push 0
lea edi, [esp + 0x70]
push edi
call fcn.00408ce0
add esp, 0xc
lea eax, [esp + 0x30]
lea ecx, [esp + 0x50]
push eax
push 0x400
push edi
push esi
call fcn.00434740
xor ecx, ecx
cmp eax, 0xc0000000
setae cl
jmp dword [ecx*4 + 0x4416f4]
xor eax, eax
cmp dword [esp + 0x30], 0
sete al
jmp dword [eax*4 + 0x4416fc]
mov eax, 1
mov edi, dword [esp + 0x10]
jmp dword [eax*4 + 0x441704]
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x64]
jmp dword [eax*4 + 0x441704]
mov byte [esp + 0x467], 0
movzx eax, byte [esp + 0x68]
xor edx, edx
test al, al
je 0x4210c1
lea ecx, [esp + 0x68]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x4210bf
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x4210b0
jmp 0x4210c1
mov edx, ecx
xor eax, eax
test edx, edx
setne al
jmp dword [eax*4 + 0x44170c]
movzx eax, byte [edx + 1]
inc edx
test al, al
mov dword [esp + 0x1c], edx
je 0x4210ef
mov ecx, edx
xor edx, edx
cmp al, 0x2e
je 0x4210f3
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x4210e0
jmp 0x4210f5
xor edx, edx
jmp 0x4210f5
mov edx, ecx
xor eax, eax
test edx, edx
setne al
mov esi, dword [esp + 0x1c]
jmp dword [eax*4 + 0x441714]
mov dword [esp + 0x14], edx
mov ecx, edx
sub ecx, esi
lea eax, [ecx + 0xd7278f7]
lea edi, [ecx + ecx*2]
mov edx, ecx
or edx, 0xfffffffe
and ecx, 0xfffffffe
add ecx, edx
shr edi, 2
cmp byte [esi + ecx + 1], 0x3d
je 0x421136
cmp byte [eax + esi - 0xd7278f8], 0x2e
jne 0x421137
dec edi
movzx eax, byte [eax + esi - 0xd7278f9]
cmp eax, 0x3d
je 0x421149
cmp eax, 0x2e
jne 0x42114a
dec edi
mov dword [esp + 0x5c], edi
lea eax, [edi + 1]
push eax
call fcn.00408c60
add esp, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x60], ebx
mov edx, dword [esp + 0x14]
sub edx, esi
je 0x42126c
xor edi, edi
mov esi, 2
mov dword [esp + 0x14], edx
jmp 0x421192
mov ecx, dword [esp + 0x4c]
nop
lea eax, [esi + 4]
add esi, 2
mov edi, ecx
cmp esi, edx
mov esi, eax
jae 0x42126c
mov ebx, dword [esp + 0x1c]
movzx eax, byte [ebx + esi - 2]
push eax
call fcn.0040f850
add esp, 4
mov byte [esp + 0x20], al
movzx eax, byte [ebx + esi - 1]
push eax
call fcn.0040f850
mov edx, dword [esp + 0x18]
add esp, 4
mov bh, al
movzx ecx, byte [esp + 0x20]
shl cl, 2
shr al, 4
and al, 3
or al, cl
mov ecx, dword [esp + 0x18]
mov byte [ecx + edi], al
lea ecx, [edi + 1]
cmp esi, edx
jae 0x421180
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + esi]
push eax
mov edi, ecx
call fcn.0040f850
mov ecx, edi
mov edx, dword [esp + 0x18]
add esp, 4
cmp al, 0x40
je 0x421180
mov bl, al
movzx eax, al
mov ecx, eax
not ecx
or ecx, 0x3c
add eax, ecx
inc eax
shl bh, 4
shr eax, 2
add al, bh
mov edi, dword [esp + 0x20]
lea ecx, [edi + 2]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x18]
mov byte [ecx + edi + 1], al
lea eax, [esi + 1]
cmp eax, edx
jae 0x42117b
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.0040f850
mov edx, dword [esp + 0x18]
add esp, 4
cmp al, 0x40
mov ecx, dword [esp + 0x4c]
je 0x421180
shl bl, 6
add al, bl
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
mov byte [ecx + edi + 2], al
add edi, 3
mov ecx, edi
jmp 0x421180
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x18]
mov byte [esi + eax], 0
push esi
call fcn.00401e60
add esp, 4
mov ebx, eax
jmp dword [0x44171c]
push esi
call fcn.00408c70
add esp, 4
push ebx
call fcn.00402730
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x441724]
mov edi, dword [esp + 0x10]
jmp 0x4213a9
mov dword [esp + 0x30], 0xdb78544b
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0xb
ja 0x421328
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx esi, byte [esp + edx + 0x30]
lea edx, [ecx + 0x23195be4]
mov edi, edx
and edi, esi
xor edx, esi
add ecx, 0xe4
and ecx, esi
add ecx, edi
sub edx, ecx
lea ecx, [edx + edi*2]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xc4
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0xc
jb 0x4212e0
lea ecx, [esp + 0x30]
push ecx
push eax
call fcn.00402680
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44172c]
mov edx, dword [esp + 0xc]
jmp 0x421379
movzx ecx, byte [eax]
test cl, cl
je 0x42136d
inc eax
mov edx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x421360
jmp 0x421371
mov edx, dword [esp + 0xc]
mov word [edx], 0x203a
add edx, 2
mov edi, dword [esp + 0x10]
movzx eax, byte [esp + 0x68]
test al, al
je 0x42139b
lea ecx, [esp + 0x69]
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421390
mov byte [edx], 0xa
inc edx
mov dword [esp + 0xc], edx
mov al, 1
mov dword [esp + 0x48], eax
push ebx
call fcn.004029a0
add esp, 4
mov ebx, dword [esp + 0x60]
add ebx, 4
xor eax, eax
cmp ebx, edi
setne al
jmp dword [eax*4 + 0x4416ec]
mov ebx, dword [esp + 0x48]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x441744]
mov edi, dword [esp + 0x44]
jmp dword [0x44174c]
and bl, 1
jmp dword [0x441758]
xor ebx, ebx
jmp dword [0x441758]
mov ecx, dword [ebp + 8]
mov ebx, dword [esp + 0xc]
mov byte [ebx], 0
mov edi, dword [esp + 0x44]
sub ebx, edi
mov dword [esp + 0x68], 0xcfc2c1f1
mov dword [esp + 0x6c], 0xc3d7d6cd
mov dword [esp + 0x70], 0xb8b4b6b1
mov dword [esp + 0x74], 0xaaba9ef3
mov dword [esp + 0x78], 0x97fdbca1
mov dword [esp + 0x7c], 0xb9a3bebb
mov dword [esp + 0x80], 0x53aee7ab
mov word [esp + 0x84], 0xdda8
mov dword [esp + 0x86], 0
mov dword [esp + 0x89], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x24
ja 0x4214b0
mov eax, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x68]
lea esi, [eax + edx]
add esi, 0x2671f6b8
add eax, 0x2671f6b8
and eax, edx
add eax, eax
sub esi, eax
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x30]
add al, 0xf8
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x68], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x25
jb 0x421470
lea eax, [esp + 0x68]
push ebx
push edi
push eax
call fcn.004095a0
mov ebx, eax
jmp dword [0x44174c]
push edi
call fcn.00408c70
add esp, 4
and bl, 1
jmp dword [0x441758]
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x42133d.11
cmp eax, dword [esp + 0x28]
je case.0x42133d.11
push eax
call fcn.00408c70
add esp, 4
mov eax, dword [esp + 0x24]
test eax, eax
je 0x421504
cmp eax, dword [esp + 0x28]
je 0x421504
push eax
call fcn.00408c70
add esp, 4
jmp dword [0x441760]
lea ecx, [esp + 0x50]
call fcn.00434430
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
int3
mov dword [esp + 0x38], 0x4bf245fa
mov dword [esp + 0x3c], 0x4f014901
mov dword [esp + 0x40], 0xb3f94d01
mov dword [esp + 0x44], 0xb706b106
mov dword [esp + 0x48], 0xbb08b509
mov dword [esp + 0x4c], 0xbfffb909
mov dword [esp + 0x50], 0xa3f4bdfb
mov dword [esp + 0x54], 0xa712a1ed
mov dword [esp + 0x58], 0xab18a5ed
mov dword [esp + 0x5c], 0xaf19a91f
mov dword [esp + 0x60], 0x9318ade4
mov dword [esp + 0x64], 0x97d7912b
mov dword [esp + 0x68], 0x9bdf9520
mov dword [esp + 0x6c], 0x9f229926
mov dword [esp + 0x70], 0x83309d39
mov dword [esp + 0x74], 0x872b8118
mov dword [esp + 0x78], 0x8b31853a
mov dword [esp + 0x7c], 0x8f23891e
mov dword [esp + 0x80], 0xf31f8d29
mov word [esp + 0x84], 0xf1f2
mov word [edi + 8], 0
mov dword [edi + 4], 0
mov dword [edi], 0
mov dword [esp + 0xa0], 0
mov ecx, dword [esp + 0xa0]
cmp ecx, 0x57
ja 0x421673
nop
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xa0]
movzx edx, byte [esp + edx + 0x38]
lea esi, [ecx + 0x75]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add ecx, 0x50f45775
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0xe4]
add cl, 0xcd
mov edx, dword [esp + 0xa0]
mov byte [esp + edx + 0x38], cl
inc dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
cmp ecx, 0x58
jb 0x421620
lea ecx, [esp + 8]
lea edx, [esp + 0x38]
push 0
push 0
push eax
push ecx
push edx
call fcn.00438fb0
add esp, 0x14
shr eax, 0x1f
jmp dword [eax*4 + 0x44177c]
lea ebx, [esp + 0x30]
lea eax, [esp + 0x10]
push ebx
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push dword [esp + 0x28]
call fcn.004393b0
add esp, 0x24
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x441784]
mov ecx, dword [esp + 0x30]
lea eax, [ecx + ecx]
add eax, 2
inc ecx
jns 0x4216d4
mov eax, 0xffffffff
push eax
call fcn.00408c60
add esp, 4
mov esi, eax
mov dword [esp + 0x38], 0xf3600dc5
mov dword [esp + 0x3c], 0xf762f167
mov dword [esp + 0x40], 0xfb56f555
mov dword [esp + 0x44], 0xff4ef954
mov dword [esp + 0x48], 0xe376fd5d
mov dword [esp + 0x4c], 0xe7e6e148
mov word [esp + 0x50], 0
mov dword [esp + 0xa0], 0
mov eax, dword [esp + 0xa0]
cmp eax, 0x19
ja 0x421780
nop
nop
nop
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax - 0x25859e82]
add eax, 0x7e
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xe4], edx
mov eax, dword [esp + 0xe4]
add al, 0x8e
mov ecx, dword [esp + 0xa0]
mov byte [esp + ecx + 0x38], al
inc dword [esp + 0xa0]
mov eax, dword [esp + 0xa0]
cmp eax, 0x1a
jb 0x421730
push ebx
push esi
push 0
lea eax, [esp + 0x44]
push eax
push dword [esp + 0x18]
call fcn.00439a10
add esp, 0x14
shr eax, 0x1f
mov dword [esp + 4], esi
jmp dword [eax*4 + 0x44178c]
mov dword [esp + 4], 0
jmp dword [0x441794]
push esi
call fcn.00408c70
add esp, 4
mov dword [esp + 4], 0
jmp dword [0x4417a0]
mov esi, 4
jmp case.0x42179c.9
jmp dword [0x4417a0]
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x4417ec]
lea eax, [esp + 0x38]
push eax
call fcn.00438560
add esp, 4
movzx eax, al
jmp dword [eax*4 + 0x4417b4]
xor eax, eax
cmp dword [esp + 0x38], 1
sete al
jmp dword [eax*4 + 0x4417bc]
xor esi, esi
mov eax, 1
jmp dword [eax*4 + 0x4417c4]
xor eax, eax
jmp dword [eax*4 + 0x4417c4]
xor esi, esi
jmp case.0x42179c.9
xor eax, eax
cmp esi, 4
setl al
jmp dword [eax*4 + 0x4417dc]
sete al
movzx eax, al
jmp dword [eax*4 + 0x4417e4]
jmp dword [0x4417fc]
mov eax, 0x20119
xor ecx, ecx
jmp dword [ecx*4 + 0x441764]
xor eax, eax
cmp dword [esp + 4], 0
setne al
mov esi, 2
jmp dword [eax*4 + 0x4417ac]
mov eax, dword [case.0x42179c.18]
nop
nop
nop
nop
nop
jmp eax
mov eax, dword [esp + 8]
mov dword [esp + 0x38], 0x9c9d9e9f
mov word [edi - 0x42], 0
mov dword [edi - 0x46], 0
mov dword [edi - 0x4a], 0
mov dword [esp + 0xa0], 0
mov ecx, dword [esp + 0xa0]
cmp ecx, 0xd
ja 0x421951
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xa0]
movzx edx, byte [esp + edx + 0x38]
lea esi, [ecx + 0x18dcab6c]
add ecx, 0x6c
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp + 0xe4], esi
mov ecx, dword [esp + 0xe4]
add cl, 0xc
mov edx, dword [esp + 0xa0]
mov byte [esp + edx + 0x38], cl
inc dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
cmp ecx, 0xe
jb 0x421900
mov ecx, dword [0x447478]
test ecx, ecx
je case.0x42179c.5
mov edx, dword [esp + 0x38]
xor esi, esi
mov ebx, dword [0x44747c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + esi*8], 0x11081610
je 0x421980
inc esi
cmp ecx, esi
jne 0x421970
jmp case.0x42179c.5
mov ecx, dword [ebx + esi*8 + 4]
cmp ecx, edx
je case.0x42179c.5
push eax
push 1
push dword [0x447480]
push ecx
call fcn.00435b80
add esp, 0x10
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov dword [esp + 0x38], 0x9c9d9e9f
mov word [edi - 0x42], 0
mov dword [edi - 0x46], 0
mov dword [edi - 0x4a], 0
mov dword [esp + 0xa0], 0
mov ecx, dword [esp + 0xa0]
cmp ecx, 0xd
ja 0x421a31
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xa0]
movzx edx, byte [esp + edx + 0x38]
lea esi, [ecx + 0x18dcab6c]
add ecx, 0x6c
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp + 0xe4], esi
mov ecx, dword [esp + 0xe4]
add cl, 0xc
mov edx, dword [esp + 0xa0]
mov byte [esp + edx + 0x38], cl
inc dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
cmp ecx, 0xe
jb 0x4219e0
mov ecx, dword [0x447478]
test ecx, ecx
je 0x421a70
mov edx, dword [esp + 0x38]
xor esi, esi
mov ebx, dword [0x44747c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebx + esi*8], 0x11081610
je 0x421a60
inc esi
cmp ecx, esi
jne 0x421a50
jmp 0x421a70
mov ecx, dword [ebx + esi*8 + 4]
cmp ecx, edx
jne 0x421a76
nop
nop
nop
nop
nop
nop
nop
nop
jmp dword [0x4417a4]
push eax
push 1
push dword [0x447480]
push ecx
call fcn.00435b80
add esp, 0x10
jmp dword [0x4417a4]
mov eax, dword [case.0x42179c.22]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor ebx, ebx
cmp dword [esp + 4], 0
sete bl
jmp dword [ebx*4 + 0x441804]
mov dword [esp + 0x38], 0x1bb919bc
mov dword [esp + 0x3c], 0xe750e553
mov dword [esp + 0x40], 0xe34be14e
mov dword [esp + 0x44], 0xef4aed43
mov dword [esp + 0x48], 0xeb5de94b
mov dword [esp + 0x4c], 0xf758f542
mov dword [esp + 0x50], 0xf35df159
mov dword [esp + 0x54], 0xff40fd0a
mov dword [esp + 0x58], 0xfb54f954
lea eax, [esp + 0x5c]
mov word [esp + 0x5c], 0xc5c4
mov dword [esp + 0x5e], 0
mov dword [esp + 0x62], 0
mov word [esp + 0x66], 0
mov dword [esp + 0xa0], 0
mov ecx, dword [esp + 0xa0]
cmp ecx, 0x2f
ja 0x421b96
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xa0]
movzx edx, byte [esp + edx + 0x38]
lea esi, [ecx + 0x1b8cf77c]
and esi, edx
add ecx, edx
add ecx, 0x1b8cf77c
add esi, esi
sub ecx, esi
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0xe4]
add cl, 0x9c
mov edx, dword [esp + 0xa0]
mov byte [esp + edx + 0x38], cl
inc dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
cmp ecx, 0x30
jb 0x421b40
lea edi, [esp + 0xa0]
lea edx, [esp + 0x38]
mov ecx, 9
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xc4]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, 0xfffffffe
mov edi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x421bd0
cmp eax, 0xffffffd9
jge 0x421bee
mov eax, 0xffffffff
jmp 0x421bf1
xor eax, eax
jmp 0x422e05
add eax, 0x26
push eax
call fcn.00408c60
add esp, 4
mov esi, eax
movzx ecx, word [edi]
test cx, cx
je 0x421c21
lea edx, [edi + 2]
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421c10
mov word [eax], 0
movzx ecx, word [esp + 0xa0]
test cx, cx
je 0x421c51
lea edx, [esp + 0xa2]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421c40
mov word [eax], 0
mov dword [esp + 0xcc], esi
jmp dword [ebx*4 + 0x44180c]
jmp dword [0x441818]
push edi
call fcn.00408c70
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push edi
call fcn.00408c70
add esp, 4
jmp dword [0x441820]
mov eax, dword [case.0x42168d.45]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
lea eax, [esp + 0x10]
push 0x60
push 3
push 0x120089
push eax
push esi
call fcn.00438790
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x441834]
xor esi, esi
xor edi, edi
jmp dword [0x4418c4]
push dword [esp + 0xcc]
call fcn.00408c70
add esp, 4
xor eax, eax
cmp esi, edi
sete al
jmp dword [eax*4 + 0x4418cc]
xor eax, eax
mov ebx, esi
test ebx, ebx
jne 0x422dd2
jmp 0x422e05
lea eax, [esp + 0x30]
push 0
push eax
push dword [esp + 0x18]
call fcn.00438b00
add esp, 0xc
not eax
shr eax, 0x1f
xor edi, edi
mov dword [esp + 0x28], 0
jmp dword [eax*4 + 0x44183c]
jmp dword [0x441844]
mov esi, dword [esp + 0x30]
lea eax, [esi + 1]
push eax
call fcn.00408c60
add esp, 4
push 0
push esi
push eax
push dword [esp + 0x1c]
call fcn.00438c00
add esp, 0x10
nop
nop
nop
nop
mov esi, dword [esp + 0x30]
lea eax, [esi + 1]
push eax
call fcn.00408c60
add esp, 4
mov edi, eax
push 0
push esi
push eax
push dword [esp + 0x1c]
call fcn.00438c00
add esp, 0x10
jmp dword [0x441850]
mov dword [esp + 0x94], edi
not eax
shr eax, 0x1f
xor edi, edi
mov dword [esp + 0x28], 0
jmp dword [eax*4 + 0x441854]
mov edi, dword [esp + 0x94]
jmp dword [0x44185c]
mov esi, dword [esp + 0x30]
mov byte [edi + esi], 0
push 0x20
call fcn.00408c60
add esp, 4
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax + 0x18], 0xffffffff
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0
mov ecx, eax
push esi
push edi
call fcn.004242b0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x30]
mov byte [edi + esi], 0
push 0x20
call fcn.00408c60
add esp, 4
mov ebx, eax
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax + 0x18], 0xffffffff
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0
mov ecx, eax
push esi
push edi
call fcn.004242b0
jmp dword [0x441864]
mov dword [esp + 0x18], ebx
movzx eax, al
xor edi, edi
xor edx, edx
lea ebx, [esp + 0x38]
jmp dword [eax*4 + 0x44186c]
jmp dword [0x441878]
mov dword [esp + 0x38], 0x57444e6b
mov dword [esp + 0x3c], 0x4a44745b
mov dword [esp + 0x40], 0x47737f07
mov dword [esp + 0x44], 0x7c195042
mov dword [esp + 0x48], 0x5e6b5444
mov dword [esp + 0x4c], 0x64650413
mov dword [esp + 0x50], 0x4f544c57
mov dword [esp + 0x54], 0xbd2f
mov byte [esp + 0x58], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x20
ja 0x421ef9
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax + 0xa4]
and edx, ecx
mov esi, 0xc5d36c5b
sub esi, eax
or esi, ecx
not esi
add esi, ecx
sub esi, edx
mov dword [esp + 0xe4], esi
mov eax, dword [esp + 0xe4]
add al, 0x84
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x38], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x21
jb 0x421eb0
mov ecx, dword [esp + 0x18]
push ebx
call fcn.004244d0
jmp case.0x42168d.63
mov ecx, dword [esp + 0x18]
push ebx
call fcn.004244d0
jmp dword [0x44187c]
mov dword [esp + 0x38], 0x57444e6b
mov dword [esp + 0x3c], 0x4a44745b
mov dword [esp + 0x40], 0x47737f07
mov dword [esp + 0x44], 0x7c195042
mov dword [esp + 0x48], 0x5e6b5444
mov dword [esp + 0x4c], 0x64650413
mov dword [esp + 0x50], 0x4f544c57
mov dword [esp + 0x54], 0xbd2f
mov byte [esp + 0x58], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x20
ja 0x421f10
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax + 0xa4]
and edx, ecx
mov esi, 0xc5d36c5b
sub esi, eax
or esi, ecx
not esi
add esi, ecx
sub esi, edx
mov dword [esp + 0xe4], esi
mov eax, dword [esp + 0xe4]
add al, 0x84
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x38], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x21
jb 0x421f80
jmp 0x421f10
xor ecx, ecx
test eax, eax
setne cl
xor edx, edx
jmp dword [ecx*4 + 0x441884]
mov ecx, dword [eax + 8]
xor edi, edi
xor eax, eax
test ecx, ecx
setne al
xor edx, edx
xor esi, esi
mov dword [esp + 0x20], 0
jmp dword [eax*4 + 0x44188c]
mov dword [esp + 0x98], ecx
mov eax, dword [ecx]
mov edx, edi
sub edx, esi
sar edx, 3
mov ecx, dword [esp + 0x20]
cmp edi, ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 4], eax
je 0x422027
mov ebx, esi
jmp 0x4220ad
mov ecx, esi
xor ecx, edi
mov eax, esi
not eax
and eax, edi
add eax, eax
sub eax, ecx
sar eax, 3
mov edi, eax
shr edi, 1
add edi, eax
lea eax, [edx + 1]
cmp edi, eax
ja 0x422047
mov edi, eax
lea eax, [edi*8]
push eax
call fcn.00408c60
add esp, 4
mov ebx, eax
test esi, esi
je 0x42209d
mov edx, dword [esp + 0x20]
cmp esi, edx
je 0x422094
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esi + eax]
mov dword [ebx + eax], ecx
mov ecx, dword [esi + eax + 4]
mov dword [ebx + eax + 4], ecx
mov dword [esi + eax], 0
lea ecx, [esi + eax]
add ecx, 8
add eax, 8
cmp ecx, edx
jne 0x422070
mov edx, esi
push edx
call fcn.00408c70
add esp, 4
mov edx, dword [esp + 0x1c]
lea eax, [ebx + edx*8]
lea ecx, [ebx + edi*8]
mov edi, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], edi
mov dword [ebx + edx*8], 0
mov dword [esp + 0x28], ebx
mov dword [ebx + edx*8 + 4], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
mov esi, ebx
inc ebx
cmp byte [eax + esi], 0
jne 0x4220d0
lea ecx, [ebx - 1]
mov dword [esp + 0x24], ecx
push ebx
call fcn.00408c60
add esp, 4
mov edi, eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov dword [eax + ecx*8], edi
mov ecx, ebx
shr ecx, 2
mov eax, dword [esp + 4]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edx, ebx
and edx, 0xfffffffc
mov eax, dword [esp + 4]
lea edi, [eax + edx]
mov ecx, ebx
and ecx, 3
mov dword [esp + 0x9c], ecx
shr ecx, 1
add edx, dword [esp + 0x34]
mov dword [esp + 0xc8], edi
mov dword [esp + 0x34], edi
mov edi, edx
mov eax, dword [esp + 0x34]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x422164
mov eax, dword [esp + 0x9c]
xor eax, 1
mov ecx, ebx
or ecx, 2
and ecx, eax
mov eax, ebx
and eax, 2
mov edi, dword [esp + 0xc8]
movzx ecx, byte [edi + ecx]
mov byte [edx + eax], cl
xor eax, eax
cmp ebx, 1
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
je 0x4221df
mov eax, 0xffffffff
cmp ebx, 2
je 0x4221bf
and esi, 0xfffffffe
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
shr ecx, 8
xor al, byte [ebx]
movzx eax, al
xor ecx, dword [eax*4 + 0x43b7a0]
mov eax, ecx
shr eax, 8
xor cl, byte [ebx + 1]
add ebx, 2
movzx ecx, cl
xor eax, dword [ecx*4 + 0x43b7a0]
add esi, 0xfffffffe
jne 0x422190
mov dword [esp + 4], ebx
test byte [esp + 0x24], 1
je 0x4221dd
mov ecx, eax
shr ecx, 8
mov esi, dword [esp + 4]
xor al, byte [esi]
movzx eax, al
xor ecx, dword [eax*4 + 0x43b7a0]
mov eax, ecx
not eax
mov ecx, dword [esp + 0x28]
mov dword [ecx + edx*8 + 4], eax
add edi, 8
mov eax, dword [case.0x42168d.72]
nop
jmp eax
mov ecx, dword [esp + 0x98]
mov ecx, dword [ecx + 4]
mov eax, dword [case.0x42168d.76]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
test ecx, ecx
setne al
mov edx, dword [esp + 0x28]
mov esi, edx
jmp dword [eax*4 + 0x44188c]
mov dword [esp + 0x28], edx
jmp dword [0x4418b4]
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.00424670
push esi
call fcn.00408c70
add esp, 4
jmp dword [0x4418bc]
jmp dword [0x4418bc]
push dword [esp + 0x94]
call fcn.00408c70
add esp, 4
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x10]
mov dword [esp + 0x38], 0x9c9d9e9f
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov word [esp + 0x44], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0xd
ja 0x4222e2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x38]
lea esi, [ecx + 0x18dcab6c]
add ecx, 0x6c
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp + 0xe4], esi
mov ecx, dword [esp + 0xe4]
add cl, 0xc
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x38], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0xe
jb 0x4222a0
mov ecx, dword [0x447478]
test ecx, ecx
je 0x42231c
mov edx, dword [esp + 0x38]
xor esi, esi
mov edi, dword [0x44747c]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x11081610
je 0x422310
inc esi
cmp ecx, esi
jne 0x422300
jmp 0x42231c
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
jne 0x422830
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
jmp dword [0x4418c4]
xor eax, eax
cmp esi, edi
sete al
jmp dword [eax*4 + 0x4418cc]
mov dword [esp + 0x2c], edi
mov eax, edi
mov dword [esp + 0x28], esi
sub eax, esi
sar eax, 3
imul eax, eax, 0x421
push eax
call fcn.00408c60
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x38], 0xba8154d
mov dword [esp + 0x3c], 0xfad099b
mov dword [esp + 0x40], 0x3900da9
mov dword [esp + 0x44], 0x7900145
mov dword [esp + 0x48], 0x7b400596
mov dword [esp + 0x4c], 0x7fec79dd
mov dword [esp + 0x50], 0x73277dd9
mov dword [esp + 0x54], 0x77c571de
mov dword [esp + 0x58], 0x6bef75e2
mov dword [esp + 0x5c], 0x6ffb69cd
mov dword [esp + 0x60], 0x63f06dc2
mov dword [esp + 0x64], 0x67c561f3
mov dword [esp + 0x68], 0x5bf865c1
mov dword [esp + 0x6c], 0x5fd25908
mov dword [esp + 0x70], 0x53c65dfa
lea eax, [esp + 0x74]
mov word [esp + 0x74], 0x5152
mov dword [esp + 0x76], 0
mov word [esp + 0x7a], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x43
ja 0x42244e
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x38]
lea esi, [ecx - 0xb677f53]
add ecx, 0xad
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp + 0xe4], esi
mov ecx, dword [esp + 0xe4]
mov edx, ecx
or edx, 0x44
and ecx, 0x44
add ecx, edx
inc cl
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x38], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x44
jb 0x422400
lea ebx, [esp + 0xe4]
lea edx, [esp + 0x38]
mov edi, ebx
mov ecx, 0xf
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x120]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea esi, [esp + 0x30]
push esi
push 0
push 0
push 0x1e
push ebx
push 0
call dword [0x44646c]
mov ebx, dword [esp + 0x30]
test ebx, ebx
jns 0x42249a
mov eax, 0xffffffff
jmp 0x42249d
lea eax, [ebx + ebx]
push eax
call fcn.00408c60
add esp, 4
mov edi, eax
push esi
push ebx
push eax
push 0x1e
lea eax, [esp + 0xf4]
push eax
push 0
call dword [0x44646c]
lea eax, [esp + 0xd4]
push 0x60
push 3
push 0x120089
push eax
mov dword [esp + 0xdc], edi
push edi
call fcn.00438790
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4418d4]
xor edx, edx
mov esi, dword [esp + 4]
mov dword [esp + 0x1c], esi
lea ebx, [esp + 0x38]
jmp dword [0x441994]
lea eax, [esp + 0xd0]
push 0
push eax
push dword [esp + 0xdc]
call fcn.00438b00
add esp, 0xc
not eax
shr eax, 0x1f
mov dword [esp + 0x24], 0
mov esi, dword [esp + 4]
jmp dword [eax*4 + 0x4418dc]
push eax
push 1
push dword [0x447480]
push ecx
call fcn.00435b80
add esp, 0x10
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
jmp dword [0x4418c4]
cmp ebx, edi
je 0x422e05
mov dword [esp + 0x24], eax
mov esi, ebx
jmp 0x422de4
cmp esi, edi
je 0x422df8
mov eax, dword [esi]
add esi, 8
test eax, eax
je 0x422de0
push eax
call fcn.00408c70
add esp, 4
jmp 0x422de0
push ebx
call fcn.00408c70
add esp, 4
mov eax, dword [esp + 0x24]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret