Function at 0x437353
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
push ecx
push esi
jne 0x4371b5
or byte [ebx - 0x39], dl
stc
cmp esi, 0xfffffffc
je 0x4371fc
cmp esi, 0xfffffffd
je 0x4371fc
mov ecx, dword [edi - 0x7f]
in al, dx
push esp
add dword [eax], eax
add byte [eax], al
add byte [ebx - 0x7a763ea3], cl
in al, 0xdc
cld
and dword [ebp + 0x50fe604d], 0xffffff8b
xchg ebp, eax
add byte [ebx + 0x46dde8c7], cl
dec edi
cmp byte [ebx], dh
cmp edi, edi
invalid
sub esp, 0x154
add byte [eax], al
mov ebx, dword [ebp - 0x3f]
mov dword [ebp - 0x7c03231c], eax
movsd dword es:[edi], dword [esi]
dec ebp
pushal
invalid
enter 0xfffffffffffffef4, 0xffffffffffffffff
push eax
call 0x84434aef
mov dword [ebp - 0x10f7b], ecx
push eax
call 0x84434efb
mov dword [ebp - 0x1077b], ecx
push eax
call fcn.00425707
push eax
call fcn.004252b1
add byte [edi], bl
call 0x48b2e62b
je 0x437288
dec eax
jne 0x4372a3
lea esi, [edx + 2]
mov eax, dword [eax]
push eax
push eax
or bl, bl
or bh, ch
push eax
fild dword [edx]
or eax, dword [esi]
dec ebp
sar byte [eax + 0x34], 0xce
call 0x72fa8187
add cl, byte [ebx + 0x46a5000]
pop ecx
add byte [ebx + 0xf506800], al
dec eax
jne 0x437278
or bl, bl
or bh, ch
push eax
fild dword [0xebfc458d]
adc cl, byte [eax]
fisttp dword [edx]
std
push eax
fild dword [ebx]
lea eax, [ebp - 4]
jmp 0x437278
cmp dword [ebp - 0x767c0014], ecx
jb 0x4372a3
mov dword [ebp + 0x50fe604d], edi
jmp 0x4372a3
movzx eax, cx
mov dword [ebp + 0x50fe604d], edi
enter 0x23e8, 0x60
invalid
call dword [eax - 0x2c]
dec ecx
add al, ch
push ecx
push 0x46087264
add cl, byte [ebx - 0x3c980000]
add bh, al
inc ebp
dec ebp
or byte [ecx + esi*8], cl
mov dword [edx + 0x33], ebp
int 0x5e
call 0x20453b68
leave
or byte [ecx - 0x745c99f8], cl
mov dword [esi + 0xc], ecx
cmpsd dword [esi], dword es:[edi]
fadd dword [ecx]
inc ebp
cld
add dh, dh
mov dword [esi], 0x6a09d89
fmul st(5), st(0)
jg 0x437329
mov dword [esi + 4], ebx
mov dword [ebp - 0x31], ebx
invalid
enter 0x860, 0xffffffffffffff8b
or byte [ecx - 0x745c99f8], cl
mov dword [esi + 0xc], ecx
inc ecx
fadd dword [ecx]
inc ebp
cld
add dh, dh
mov dword [esi], 0xcde406c7
jg 0x43738d
push eax
mov dword [ebp - 0x73], ecx
call 0x64e73d6
add al, ch
push cs
pop es
push esi
push esi
mov esi, ecx
std
dec dword [ebp - 0x7428e373]
add dh, byte [edi + 0x37]
sub edi, dword [esi]
push ebx
mov eax, edi
call 0x55487318
mov ebp, esp
push esi
push ecx
push esi
jne 0x437381
or byte [edi - 0x17c063b], al
cld
je 0x4373c8
cmp esi, 0xfffffffd
je 0x4373b6
sub edi, dword [esi]
push ebx
mov eax, edi
call 0x5548732e
mov ebp, esp
push esi
push ecx
push esi
jne 0x4373a0
or byte [eax - 0x3b], ch
stc
cmp esi, 0xfffffffc
je 0x4373e7
cmp esi, 0xfffffffd
je 0x4373d5
sub edi, dword [esi]
ja 0x4373a6
mov eax, dword [edx + ebx - 0x3e7cd9fe]
add al, 0x8b
add dword [eax - 0x47], edx
inc esp
adc al, 0xc
add ecx, 4
mov eax, dword [ecx]
push eax
mov ecx, 0xc14c4ff
dec edi
and al, byte [eax]
movzx eax, byte [esi]
mov dh, 6
xor eax, ecx
and eax, 0xc14c4ff
shr ecx, 8
xor ecx, dword [edi + eax*4]
inc esi
dec edx
jne 0x4373b5
in al, dx
pop edi
pop esi
jmp 0x4373d0
or bh, bh
invalid
je 0x43744b
add al, 0xb0
mov eax, dword [esi + 0x1014c4ff]
or al, 0x57
mov edi, ecx
push eax
call 0xc4c4ae9
jge 0x43736e
or byte [edi*2 - 0x3b00597d], cl
cmpsb byte [esi], byte es:[edi]
inc esp
adc al, 0x10
or byte [ebp + 0x10], al
mov cl, cl
jmp [eax]