Function at 0x423760
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
cmp byte [esp + 0x64], 0
je 0x4237b0
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x60]
mov ebp, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
cmp word [ebp + eax + 2], 0
lea eax, [eax + 2]
jne 0x423780
mov ecx, 0xfffffffe
cmp word [edx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x423790
sar eax, 1
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1f
test edx, edx
jns 0x4237b7
mov eax, 0xffffffff
jmp 0x4237c0
xor ebx, ebx
jmp 0x423a8d
add eax, ecx
lea eax, [eax*2 + 0x3e]
push eax
call fcn.004082a0
add esp, 4
movzx ecx, word [ebp]
mov edx, eax
test cx, cx
je 0x4237f2
add ebp, 2
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x4237e0
mov dword [esp + 0x3c], eax
mov eax, edx
mov word [edx], 0x5c
mov dword [esp], 0x6c376a05
mov dword [esp + 4], 0x600c6e12
mov dword [esp + 8], 0x641f6200
mov dword [esp + 0xc], 0x78136636
mov dword [esp + 0x10], 0x7c0f7a18
mov dword [esp + 0x14], 0x70137e18
mov dword [esp + 0x18], 0x740d7228
mov dword [esp + 0x1c], 0x88127611
mov dword [esp + 0x20], 0x8cee8a01
mov dword [esp + 0x24], 0x80e38ee9
mov dword [esp + 0x28], 0x84fa82dd
mov dword [esp + 0x2c], 0x98e286f3
mov dword [esp + 0x30], 0x9ce49ada
mov dword [esp + 0x34], 0x90e29ee0
mov dword [esp + 0x38], 0x949392fd
xor edx, edx
mov ecx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx]
lea esi, [edx - 0x15729a9f]
mov ebp, esi
and ebp, edi
add ebp, ebp
sub ebp, esi
mov esi, ebp
xor esi, edi
not ebp
and ebp, edi
add ebp, ebp
sub ebp, esi
mov esi, 8
sub esi, ebp
or esi, 1
add esi, ebp
lea edi, [ebp*2]
or edi, 0xfd
add edi, ebp
lea ebx, [edi + esi*2]
add bl, 0xe9
mov byte [esp + edx], bl
and ecx, 1
not edx
or edx, 1
sub ecx, edx
mov edx, ecx
cmp ecx, 0x3c
jb 0x423880
mov esi, eax
add esi, 2
mov eax, dword [esp + 0x60]
movzx ecx, word [eax]
test cx, cx
je 0x423901
add eax, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [eax]
add eax, 2
test cx, cx
jne 0x4238f0
mov word [esi], 0
movzx ecx, word [esp]
test cx, cx
je 0x423931
lea edx, [esp + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423920
mov word [esi], 0
mov dword [esp + 0x40], 0x92cf90c5
mov dword [esp + 0x44], 0x96089436
mov dword [esp + 0x48], 0x8a89880b
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x40]
mov esi, eax
and esi, 0xe
mov edx, ecx
xor edx, 0x856f8da7
add edx, esi
mov ebp, edx
and ebp, ebx
mov esi, ebp
or esi, 0xfffffffd
inc esi
mov edi, ebp
and edi, 0xffffffbd
imul edi, esi
mov esi, ebp
and esi, 2
or ebp, 2
imul ebp, esi
sub edi, ebp
add edx, ebx
add edx, edi
mov esi, edx
not esi
or esi, 0x47
add esi, edx
xor edx, 0xc7
lea edx, [edx + esi*2]
add dl, 3
mov byte [esp + ecx + 0x40], dl
inc ecx
add eax, 2
cmp ecx, 0xc
jne 0x423960
mov dword [esp], 0x10be1e40
mov dword [esp + 4], 0x14af12a8
mov dword [esp + 8], 0x686816a6
mov dword [esp + 0xc], 0x6cd26a3e
mov dword [esp + 0x10], 0x60cb6ed3
mov dword [esp + 0x14], 0x64d462de
mov dword [esp + 0x18], 0x780766d6
mov dword [esp + 0x1c], 0x7cda7a24
mov dword [esp + 0x20], 0x70c37ec4
mov word [esp + 0x24], 0x7271
mov eax, 0x2c0215b5
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x2c0215b5]
mov edx, eax
and edx, ebx
mov esi, edx
or esi, 0xfffffffd
inc esi
mov ecx, edx
and ecx, 0xfffffffd
imul ecx, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add ecx, ebx
sub ecx, edx
add ecx, eax
mov edx, ecx
xor edx, 0xa9
and ecx, 0x56
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax - 0x2c0215b5], cl
inc eax
cmp eax, 0x2c0215db
jne 0x423a10
lea eax, [esp + 0x40]
mov ecx, esp
push 0
push 4
push 0xc00000
push eax
mov esi, dword [esp + 0x4c]
push esi
push ecx
mov eax, dword [esp + 0x84]
push dword [eax]
call fcn.0041ef40
add esp, 0x1c
mov ebx, eax
push esi
call fcn.004082b0
add esp, 4
mov eax, ebx
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret 0x10