Function at 0x10038930
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [ebp + 8]
push ebx
lea ecx, [eax + 0x6f6]
push esi
push edi
mov ebx, eax
mov dword [ebp - 0x14], ecx
cmp eax, ecx
ja 0x1003898f
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 4]
mov ecx, dword [ebp + 0x10]
cmp ebx, 0x3272
ja 0x10038ade
je 0x10038ac9
cmp ebx, 0x31ac
ja 0x10038a1e
je 0x10038a0c
mov eax, ebx
sub eax, 0x1ade
je 0x100389a5
sub eax, 0x42
je 0x10038999
sub eax, 0x42
jne 0x10038e81
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp + 8], 0xffffffff
jmp 0x10038e81
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
push edi
lea edx, [ebp - 0xc]
push 0x154d
push edx
mov dword [ebp - 0xc], ecx
call fcn.10038500
add esp, 0xc
test eax, eax
je 0x10038a03
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
push edi
lea edx, [ebp - 0xc]
push 0x154d
push edx
mov dword [ebp - 0xc], ecx
call fcn.10038500
add esp, 0xc
test eax, eax
je 0x10038a03
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
push edi
lea edx, [ebp - 0xc]
push 0x154d
push edx
mov dword [ebp - 0xc], ecx
call fcn.10038500
add esp, 0xc
test eax, eax
jne 0x10038e81
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
mov dword [ebp - 8], eax
cmp edi, eax
je 0x10038992
jmp 0x10038e81
mov eax, ebx
sub eax, 0x31ee
je 0x10038a59
sub eax, 0x42
jne 0x10038e81
push eax
push eax
push eax
push 0x796f
call fcn.10058be0
add esp, 0x10
push 0
push 0x3e8
push edx
push eax
call fcn.10003770
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], edx
jmp 0x10038e81
cmp dword [edi + 0x40], 0
je 0x10038e81
mov esi, 0x6980
jmp 0x10038a70
mov eax, esi
sub eax, 0x6980
je 0x10038a92
sub eax, 0xe
je 0x10038a89
sub eax, 0xe
je 0x1003898f
jmp 0x10038ab6
mov dword [ebp + 8], 0
jmp 0x10038ab6
mov al, 0xcc
leave
mov ebp, 0x10458b49
mov eax, dword [eax]
cmp eax, 0xffffffff
jne 0x10038aa3
or eax, eax
mov ecx, dword [edi + 0x40]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x10038e97
add esi, 0xe
cmp esi, 0x699c
jbe 0x10038a70
mov esi, dword [ebp - 4]
jmp 0x10038e81
mov eax, dword [ecx]
xor ecx, ecx
add eax, dword [ebp - 0x1c]
adc ecx, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], ecx
jmp 0x10038e81
cmp ebx, 0x5cb4
ja 0x10038e44
je 0x10038e39
mov eax, ebx
sub eax, 0x32b4
je 0x10038b20
sub eax, 0x42
je 0x10038b11
sub eax, 0x42
jne 0x10038e81
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea edx, [edi + 4]
push edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x10038e81
imul eax, eax, 0x8de82a09
inc edi
add al, 0x50
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov eax, dword [edi + 0x30]
xor esi, esi
cmp eax, esi
jne 0x10038c47
cmp dword [edi + 0x38], esi
je 0x10038b7e
mov ecx, 0x689
lea edx, [esi + 1]
lea ebx, [ebx]
mov eax, ecx
sub eax, 0x689
je 0x10038b6e
sub eax, 0x29
je 0x10038b69
sub eax, 0x29
je 0x10038e2f
jmp 0x10038b71
mov dword [edi + 0x38], esi
jmp 0x10038b71
mov dword [ebp - 8], edx
add ecx, 0x29
cmp ecx, 0x6db
jbe 0x10038b50
jmp 0x10038b30
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0xffffffff
jne 0x10038b9d
mov ecx, dword [edi]
lea eax, [edi + 4]
push eax
push esi
push 0x69d0
push ecx
call fcn.100527e0
add esp, 0x10
jmp 0x10038b30
mov ebx, dword [ebp - 0x28]
mov esi, 0x960
mov eax, esi
sub eax, 0x960
je 0x10038c0c
sub eax, 0x11
je 0x10038bf3
sub eax, 0x11
jne 0x10038c33
mov dword [ebx], ecx
xchg esi, eax
xchg esi, eax
insb byte es:[edi], dx
test ebx, ebx
jl 0x10038e2f
jg 0x10038bd0
cmp dword [ebp - 0x2c], eax
jbe 0x10038e2f
mov eax, dword [edi]
mov edx, dword [ebp - 0x2c]
push eax
lea eax, [edi + 4]
push eax
lea ecx, [ebp - 0xc]
push ecx
push 0x1b8a
mov dword [ebp - 0xc], edx
call fcn.1004f3b0
mov ebx, dword [ebp - 0x28]
add esp, 0x10
jmp 0x10038c33
sahf
ror byte [eax - 0x4f], 0x60
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x20]
sbb ebx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], ebx
jmp 0x10038c33
push 0
push 0
push 0
push 0x796f
call fcn.10058be0
add esp, 0x10
push 0
push 0x3e8
push edx
push eax
call fcn.10003770
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], edx
add esi, 0x11
cmp esi, 0x982
jbe 0x10038ba5
jmp 0x10038b30
cmp eax, 1
jne 0x10038e2f
mov dword [ebp - 0xc], 0x363e
mov eax, dword [ebp - 0xc]
lea ebx, [ebx]
sub eax, 0x363e
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov esi, 1
je 0x10038dcb
sub eax, 0x46
je 0x10038d98
sub eax, 0x46
jne 0x10038df2
popal
inc esp
jno 0x10038c26
stosd dword es:[edi], eax
cmp dword [edi + 0x38], eax
je 0x10038ccd
mov ecx, 0x5e1b
mov eax, ecx
sub eax, 0x5e1b
je 0x10038cb5
sub eax, 0x27
jne 0x10038cbd
mov esi, dword [ebp - 4]
mov dword [edi + 0x38], eax
mov ebx, 0x32b4
jmp 0x10038e81
adc dword [ebx + 0x4b], edx
cmp dh, al
mov dword [ebp - 8], esi
add ecx, 0x27
cmp ecx, 0x5e42
jbe 0x10038c97
jmp 0x10038df2
cmp ecx, dword [edi + 0x2c]
jl 0x10038cf5
jg 0x10038cd9
cmp edx, dword [edi + 0x28]
jb 0x10038cf5
mov eax, 0x593d
cmp eax, eax
je 0x10038e0b
add eax, 0x40
cmp eax, 0x593d
jbe 0x10038ce0
jmp 0x10038df2
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0xffffffff
je 0x10038d11
cmp ecx, dword [ebp - 0x20]
jg 0x10038e2f
jl 0x10038d11
cmp edx, dword [ebp - 0x24]
jae 0x10038e2f
mov ebx, dword [ebp - 0x30]
mov esi, 0x5316
lea esp, [esp]
mov eax, esi
sub eax, 0x5316
je 0x10038d79
sub eax, 0xf
je 0x10038d53
sub eax, 0xf
jne 0x10038d88
mov edx, dword [edi]
mov ecx, dword [ebp - 0x34]
push edx
lea eax, [edi + 4]
push eax
lea eax, [ebp - 0x10]
push eax
push 0x1b8a
mov dword [ebp - 0x10], ecx
call fcn.1004f3b0
add esp, 0x10
jmp 0x10038d88
mov ecx, dword [ebp + 0x10]
cmp dword [ecx], 0xffffffff
je 0x10038d88
mov ecx, dword [ebp - 0x24]
sub ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
sbb eax, dword [ebp - 0x18]
cmp eax, ebx
jg 0x10038d88
jl 0x10038d72
cmp ecx, dword [ebp - 0x34]
jae 0x10038d88
mov dword [ebp - 0x34], ecx
mov ebx, eax
jmp 0x10038d88
mov eax, dword [edi + 0x28]
sub eax, dword [ebp - 0x1c]
mov ebx, dword [edi + 0x2c]
sbb ebx, dword [ebp - 0x18]
mov dword [ebp - 0x34], eax
int3
add esi, 0xf
cmp esi, 0x5334
jbe 0x10038d20
mov dword [ebp - 0x30], ebx
jmp 0x10038df2
dec ecx
mov word [ebx + 0x478b3f8b], ss
cmp al, 0x8b
jne 0x10038d87
mov ecx, dword [ebp - 0x18]
mov edx, 0x3e8
mul edx
sub esi, dword [edi + 0x28]
sbb ecx, dword [edi + 0x2c]
cmp ecx, edx
jl 0x10038df2
jg 0x10038dbd
cmp esi, eax
jbe 0x10038df2
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], ecx
jmp 0x10038df2
push 0
push 0
push 0
push 0x796f
call fcn.10058be0
add esp, 0x10
push 0
push 0x3e8
push edx
push eax
call fcn.10003770
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0xc]
add eax, 0x46
mov dword [ebp - 0xc], eax
cmp eax, 0x36ca
jbe 0x10038c60
jmp 0x10038b30
cmp dword [edi + 0x34], 0
mov dword [ebp - 8], esi
jne 0x10038e25
mov esi, dword [ebp - 4]
mov dword [edi + 0x30], 0
mov ebx, 0x32b4
jmp 0x10038e81
mov edx, dword [edi + 0x3c]
add dword [edi + 0x28], edx
adc dword [edi + 0x2c], 0
mov esi, dword [ebp - 4]
mov ebx, 0x32b4
jmp 0x10038e81
mov esi, dword [ecx]
shr esi, 5
inc esi
mov dword [ebp - 4], esi
jmp 0x10038e81
mov eax, ebx
sub eax, 0x5cf6
je 0x10038e58
sub eax, 0x42
je 0x1003898f
jmp 0x10038e81
mov eax, dword [ecx]
mov ecx, eax
cmp ecx, esi
jb 0x10038e7e
movsx edx, byte [edi + ecx - 1]
mov esi, eax
shl esi, 5
add edx, esi
mov esi, eax
shr esi, 2
add edx, esi
mov esi, dword [ebp - 4]
sub ecx, esi
xor eax, edx
cmp ecx, esi
jae 0x10038e60
mov dword [ebp + 8], eax
add ebx, 0x42
cmp ebx, dword [ebp - 0x14]
jbe 0x10038951
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret