Function at 0x42037d
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xbc
mov esi, ecx
mov ebx, dword [esp + 0xd0]
mov dword [esp + 0xb8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 2
mov dword [esp + 0xa4], 1
push 0x28501340
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
lea ecx, [esp + 0x20]
lea edx, [esp + 0x9c]
push ecx
push edx
push dword [esp + 0xdc]
push ebx
call eax
test eax, eax
je 0x41fb47
cmp dword [esi], 0xffffffff
jne 0x41fbe8
jmp 0x41fff3
push 0x1268aeb0
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
mov edi, eax
push 0x4ab545
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
mov dword [esp], eax
push 0xa2994af6
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x20]
jmp 0x41fb93
mov ebp, dword [ebp + 0x1c]
test ebp, ebp
je 0x41fbc6
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp + 4]
call edi
mov dword [esi], eax
cmp eax, 0xffffffff
je 0x41fb90
push dword [ebp + 0x10]
push dword [ebp + 0x18]
push eax
call dword [esp + 0xc]
test eax, eax
je 0x41fbc6
push dword [esi]
call dword [esp + 0x14]
mov dword [esi], 0xffffffff
jmp 0x41fb90
push 0x6177aa44
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
push dword [esp + 0x20]
call eax
cmp dword [esi], 0xffffffff
je 0x41fff3
mov edi, dword [esp + 0xd8]
mov eax, 0x14
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + eax - 0x14], 0
lea eax, [eax + 1]
jne 0x41fc00
mov ecx, 0xffffffff
nop
cmp byte [ebx + ecx + 1], 0
lea ecx, [ecx + 1]
jne 0x41fc10
mov dword [esp + 0x10], esi
mov edx, ecx
and edx, eax
add edx, edx
xor ebp, ebp
mov esi, dword [esp + 0xd4]
nop
nop
nop
cmp byte [esi + ebp], 0
lea ebp, [ebp + 1]
jne 0x41fc30
xor ecx, eax
add edx, ecx
lea eax, [edx + ebp]
add eax, 0x76
push eax
call fcn.00408b20
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x26], 0x22212cf3
mov dword [esp + 0x2a], 0x14181727
mov dword [esp + 0x2e], 0x36f7f11a
mov dword [esp + 0x32], 0x8555350
mov word [esp + 0x36], 0xc4e3
lea eax, [esp + 0x26]
mov ecx, 0x5d9c8074
nop
movzx ebp, byte [eax]
mov edx, ecx
or edx, ebp
lea esi, [ecx - 0x5d9c8000]
and esi, ebp
lea ebp, [esi + esi]
not ebp
add ebp, esi
lea esi, [ebp*2]
not esi
add esi, ebp
not edx
or edx, esi
mov esi, edx
and esi, 0x27
xor edx, 0xa7
lea edx, [edx + esi*2]
inc dl
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0x5d9c8062
jne 0x41fc80
mov dword [esp + 4], 0xacdfcfce
mov byte [esp + 8], 0x8d
xor eax, eax
mov ecx, eax
add cl, 0x81
xor cl, byte [esp + eax + 4]
add cl, 0xf8
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 5
jne 0x41fcd0
movzx eax, byte [esp + 4]
mov ebp, dword [esp]
test al, al
je 0x41fd0c
lea ecx, [esp + 5]
mov ebp, dword [esp]
nop
nop
nop
nop
nop
nop
nop
mov byte [ebp], al
inc ebp
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41fd00
mov byte [ebp], 0
movzx eax, byte [edi]
test al, al
je 0x41fd2c
inc edi
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebp], al
inc ebp
movzx eax, byte [edi]
inc edi
test al, al
jne 0x41fd20
mov byte [ebp], 0
movzx eax, byte [esp + 0x26]
test al, al
je 0x41fd4c
lea ecx, [esp + 0x27]
nop
nop
nop
mov byte [ebp], al
inc ebp
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41fd40
mov byte [ebp], 0
movzx eax, byte [ebx]
test al, al
je 0x41fd6c
inc ebx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebp], al
inc ebp
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x41fd60
mov byte [ebp], 0x3a
mov dword [esp + 0x26], 0x1a3c726a
mov dword [esp + 0x2a], 0x2a2c1e2c
mov dword [esp + 0x2e], 0x15614a2a
mov dword [esp + 0x32], 0x19162626
mov dword [esp + 0x36], 0xeedce324
mov dword [esp + 0x3a], 0xe1be8686
mov dword [esp + 0x3e], 0xd1d4eee1
mov dword [esp + 0x42], 0xe8eaede7
mov dword [esp + 0x46], 0xfadc88bd
mov dword [esp + 0x4a], 0xcaccfecc
mov dword [esp + 0x4e], 0xd19b9dca
mov dword [esp + 0x52], 0xd1b8c7c6
mov dword [esp + 0x56], 0xc5eafac2
mov dword [esp + 0x5a], 0xcaf8c7f8
mov dword [esp + 0x5e], 0xdbf4eb82
mov dword [esp + 0x62], 0x85ddb499
mov dword [esp + 0x66], 0xf7f1f2ed
mov dword [esp + 0x6a], 0x9ff188e9
mov dword [esp + 0x6e], 0xd9fdca8a
mov dword [esp + 0x72], 0x84828ddb
mov dword [esp + 0x76], 0xadfd90df
mov dword [esp + 0x7a], 0xc4c0f1f6
mov dword [esp + 0x7e], 0xef92958c
mov dword [esp + 0x82], 0x85979184
mov dword [esp + 0x86], 0x8fb28ba8
mov dword [esp + 0x8a], 0x8b9bf1bf
mov dword [esp + 0x8e], 0xbdb8b3bd
mov dword [esp + 0x92], 0xf7c5eebd
mov dword [esp + 0x96], 0xe7e3e5f4
mov word [esp + 0x9a], 0x1ce1
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x26]
lea esi, [eax - 0x6f641611]
mov ecx, 0x10
sub ecx, eax
xor ecx, esi
and ecx, edx
xor ecx, esi
mov edx, ecx
and edx, 7
xor ecx, 0x7b20b087
lea edx, [ecx + edx*2]
and ecx, 1
or edx, 1
add edx, ecx
mov byte [esp + eax + 0x26], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x76
jb 0x41fe80
inc ebp
mov ecx, dword [esp + 0xd4]
movzx eax, byte [ecx]
test al, al
je 0x41feee
inc ecx
mov esi, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebp], al
inc ebp
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41fee0
jmp 0x41fef2
mov esi, dword [esp + 0x10]
mov byte [ebp], 0
movzx eax, byte [esp + 0x26]
test al, al
je 0x41ff1c
lea ecx, [esp + 0x27]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebp], al
inc ebp
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41ff10
mov byte [ebp], 0
mov edi, dword [esp]
sub ebp, edi
push 0x12007ce3
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
push 0
push ebp
push edi
push dword [esi]
call eax
mov edi, esi
mov esi, eax
cmp eax, 0xffffffff
jne 0x41ff96
cmp dword [edi], 0xffffffff
je 0x41ff96
push 0x4f80c377
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa2994af6
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
push dword [esp]
call fcn.00408b30
add esp, 4
xor eax, eax
jmp 0x4204a6
push dword [esp]
call fcn.00408b30
add esp, 4
cmp esi, 0xffffffff
je 0x41fff3
push 0x400
call fcn.00408b20
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 8], eax
add eax, 0x400
mov dword [esp + 0xc], eax
lea eax, [esp + 4]
mov ecx, dword [esp + 0x10]
push eax
call fcn.004204c0
test al, al
je 0x420485
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
mov ebx, edi
sub ebx, esi
cmp edi, dword [esp + 0xc]
je 0x41fffa
mov eax, esi
jmp 0x42012d
xor eax, eax
jmp 0x4204a6
lea eax, [ebx + 1]
mov ebp, ebx
shr ebp, 1
lea ecx, [ebx + ebp]
cmp ecx, eax
ja 0x42000a
mov ecx, eax
mov dword [esp], ecx
push ecx
call fcn.00408b20
add esp, 4
test esi, esi
je 0x420119
cmp eax, esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], eax
jbe 0x4200ca
cmp edi, eax
jbe 0x4200ca
test ebx, ebx
je 0x420105
mov edx, dword [esp + 0x18]
lea eax, [esi + edx]
dec eax
mov ecx, dword [esp + 0x14]
add ecx, edx
dec ecx
mov ebp, edx
and ebp, 7
je 0x42006c
neg ebp
xor edx, edx
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp ebp, edx
jne 0x420058
add eax, edx
add ecx, edx
add edx, dword [esp + 0x18]
sub esi, edi
cmp esi, 0xfffffff8
ja 0x420105
neg edx
xor esi, esi
movzx ebx, byte [eax + esi]
mov byte [ecx + esi], bl
movzx ebx, byte [eax + esi - 1]
mov byte [ecx + esi - 1], bl
movzx ebx, byte [eax + esi - 2]
mov byte [ecx + esi - 2], bl
movzx ebx, byte [eax + esi - 3]
mov byte [ecx + esi - 3], bl
movzx ebx, byte [eax + esi - 4]
mov byte [ecx + esi - 4], bl
movzx ebx, byte [eax + esi - 5]
mov byte [ecx + esi - 5], bl
movzx ebx, byte [eax + esi - 6]
mov byte [ecx + esi - 6], bl
movzx ebx, byte [eax + esi - 7]
mov byte [ecx + esi - 7], bl
add esi, 0xfffffff8
cmp edx, esi
jne 0x42007b
jmp 0x420105
mov ecx, ebx
shr ecx, 2
mov edx, esi
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edx, ebx
and edx, 0xfffffffc
add eax, edx
add edx, esi
and ebp, 1
mov esi, edx
mov edi, eax
mov ecx, ebp
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test bl, 1
je 0x420105
mov ecx, dword [esp + 0x18]
and ecx, 2
movzx edx, byte [edx + ecx]
mov byte [eax + ecx], dl
push dword [esp + 4]
call fcn.00408b30
add esp, 4
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov dword [esp + 4], eax
lea ecx, [eax + ebx]
mov dword [esp + 8], ecx
mov ecx, dword [esp]
add ecx, eax
mov dword [esp + 0xc], ecx
mov byte [eax + ebx], 0
mov eax, dword [esp + 4]
mov ebp, dword [esp + 8]
inc ebp
mov dword [esp + 8], ebp
mov dword [esp + 0x26], 0xb0e0d10
mov dword [esp + 0x2a], 0xeef0ecf3
mov dword [esp + 0x2e], 0xd2d2d0c0
mov byte [esp + 0x32], 0xe4
xor ecx, ecx
nop
nop
nop
mov edx, ecx
add dl, 0x18
xor dl, byte [esp + ecx + 0x26]
add dl, 0x40
mov byte [esp + ecx + 0x26], dl
inc ecx
cmp ecx, 0xd
jne 0x420160
movzx edx, byte [esp + 0x26]
mov ecx, eax
test dl, dl
je 0x4201b6
lea edi, [esp + 0x26]
mov esi, eax
mov ecx, eax
jmp 0x420197
movzx edx, byte [edi]
test dl, dl
je 0x4201b6
mov dh, byte [esi]
test dh, dh
je 0x42041b
inc edi
inc esi
lea ebx, [ecx + 1]
cmp dh, dl
je 0x4201ae
mov ecx, ebx
mov esi, ebx
je 0x420190
lea edi, [esp + 0x26]
jmp 0x420190
test ecx, ecx
je 0x42041b
mov esi, dword [esp + 0x10]
jmp 0x4201e2
not bl
movsx edx, bl
inc ecx
add ecx, edx
mov esi, dword [esp + 0x10]
je 0x42048c
mov edx, eax
sub edx, ebp
je 0x420207
mov esi, ebp
xor ecx, ecx
mov edi, eax
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov esi, dword [esp + 0x10]
xor ecx, ecx
mov edi, eax
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
add dword [esp + 8], edx
mov ecx, esi
lea eax, [esp + 4]
push eax
call fcn.004204c0
test al, al
je 0x420485
mov dword [esp], eax
mov ebp, dword [esp + 4]
mov edi, dword [esp + 8]
mov ebx, edi
sub ebx, ebp
cmp edi, dword [esp + 0xc]
je 0x420240
mov eax, ebp
jmp 0x420383
lea eax, [ebx + 1]
mov esi, ebx
shr esi, 1
lea ecx, [esi + ebx]
cmp ecx, eax
ja 0x420250
mov ecx, eax
mov dword [esp + 0x18], ecx
push ecx
call fcn.00408b20
add esp, 4
test ebp, ebp
je 0x42036e
cmp eax, ebp
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], eax
jbe 0x42031f
cmp edi, eax
jbe 0x42031f
test ebx, ebx
je 0x42035a
mov edx, dword [esp + 0x14]
lea eax, [edx + ebp]
dec eax
mov ecx, dword [esp + 0x1c]
add ecx, edx
dec ecx
mov esi, edx
and esi, 7
je 0x4202b4
neg esi
xor edx, edx
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp esi, edx
jne 0x4202a0
add eax, edx
add ecx, edx
add edx, dword [esp + 0x14]
sub ebp, edi
cmp ebp, 0xfffffff8
ja 0x42035a
neg edx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + esi]
mov byte [ecx + esi], bl
movzx ebx, byte [eax + esi - 1]
mov byte [ecx + esi - 1], bl
movzx ebx, byte [eax + esi - 2]
mov byte [ecx + esi - 2], bl
movzx ebx, byte [eax + esi - 3]
mov byte [ecx + esi - 3], bl
movzx ebx, byte [eax + esi - 4]
mov byte [ecx + esi - 4], bl
movzx ebx, byte [eax + esi - 5]
mov byte [ecx + esi - 5], bl
movzx ebx, byte [eax + esi - 6]
mov byte [ecx + esi - 6], bl
movzx ebx, byte [eax + esi - 7]
mov byte [ecx + esi - 7], bl
add esi, 0xfffffff8
cmp edx, esi
jne 0x4202d0
jmp 0x42035a
mov ecx, ebx
shr ecx, 2
mov edx, ebp
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edx, ebx
and edx, 0xfffffffc
add eax, edx
add edx, ebp
and esi, 1
mov ebp, edx
mov edi, eax
mov ecx, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test bl, 1
je 0x42035a
mov ecx, dword [esp + 0x14]
and ecx, 2
movzx edx, byte [edx + ecx]
mov byte [eax + ecx], dl
push dword [esp + 4]
call fcn.00408b30
add esp, 4
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], eax
lea ecx, [eax + ebx]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 0xc], ecx
mov byte [eax + ebx], 0
mov eax, dword [esp + 4]
mov ebp, dword [esp + 8]
inc ebp
mov dword [esp + 8], ebp
mov word [esp + 0x26], 0xfaf2
mov byte [esp + 0x28], 0x81
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x26]
mov esi, edx
not esi
or esi, 0x4e016ce0
add esi, edx
inc esi
and edx, 0x1f
xor edx, 0xb1fe931f
mov edi, edx
xor edi, esi
not esi
and esi, edx
add edi, edx
sub edi, esi
mov edx, 0x28
sub edx, ecx
xor edx, edi
add dl, 0x48
mov byte [esp + ecx + 0x26], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 3
jb 0x4203b0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
movsx ecx, byte [eax + edx]
movzx ebx, byte [esp + edx + 0x26]
test ecx, ecx
je 0x4201d0
inc edx
cmp cl, bl
je 0x420400
jmp 0x4201d0
mov esi, dword [esp + 0x10]
cmp dword [esi], 0xffffffff
je 0x420485
mov word [esi + 6], 0x3ea
mov word [esp + 0x26], 0xea03
lea eax, [esp + 0x26]
mov ecx, esi
push 0x440bdc
push 1
push 1
push 8
push 2
push eax
call fcn.0041ee70
cmp dword [esi], 0xffffffff
je 0x420485
push 0x4f80c377
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
push 2
push dword [esi]
call eax
push 0xa2994af6
push dword [0x44832c]
call fcn.0043dba0
add esp, 8
push dword [esi]
call eax
mov dword [esi], 0xffffffff
mov dword [esp], 0
mov eax, dword [esp + 4]
test eax, eax
je 0x4204a3
cmp eax, dword [esp + 8]
je 0x4204a3
push eax
call fcn.00408b30
add esp, 4
mov eax, dword [esp]
add esp, 0xbc
pop esi
pop edi
pop ebx
pop ebp
ret 0xc