Function at 0x10037fe0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1040
call fcn.102244a0
push ebx
push ebp
mov ebx, dword [esp + 0x104c]
push esi
mov esi, dword [esp + 0x1054]
push edi
push 0
push 0x8002
mov dword [esi], 0
mov ecx, dword [0x107ab964]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x1c], ebp
je 0x10038617
mov ecx, dword [0x107ab964]
push ebp
mov edx, dword [ecx]
call dword [edx + 0x20]
test eax, eax
mov dword [esp + 0x18], eax
jle 0x1003860b
mov edx, dword [0x107ab964]
mov ecx, 0xa
xor eax, eax
lea edi, [esp + 0x28]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x28]
push ecx
push ebp
push edx
call fcn.100111d0
add esp, 0xc
test eax, eax
je 0x1003860b
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
lea eax, [edx + ecx]
test eax, eax
mov dword [esp + 0x24], eax
jle 0x1003860b
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jl 0x1003860b
mov edx, ecx
sub edx, eax
cmp edx, 0x400
jge 0x100380c3
mov ecx, dword [0x107ab964]
push ebp
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ecx, dword [0x107ab964]
push esi
push ebx
push ecx
call fcn.1002bac0
add esp, 0xc
neg eax
pop edi
pop esi
sbb eax, eax
pop ebp
neg eax
pop ebx
add esp, 0x1040
ret
lea edx, [esp + 0x14]
push 1
lea eax, [esp + 0x54]
push edx
push eax
push 0x1000
push 0x1000
push 0x13000
push ecx
mov ecx, dword [0x107ab964]
push ebp
push ecx
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x100385af
mov ecx, dword [esp + 0x14]
cmp ecx, 0x200
jl 0x100385af
lea edi, [ecx - 0x30]
xor edx, edx
xor esi, esi
xor eax, eax
test edi, edi
mov byte [esp + 0x13], 0
mov byte [esp + 0x12], 0
mov dword [esp + 0x20], esi
jle 0x1003830d
mov bl, 0xff
cmp edx, 3
jge 0x10038309
mov ecx, edx
sub ecx, 0
je 0x1003829a
dec ecx
je 0x100381f9
dec ecx
jne 0x10038300
cmp dword [esp + eax + 0x50], 0x8ba8458b
jne 0x10038300
cmp byte [esp + eax + 0x54], 0x48
jne 0x10038300
cmp dword [esp + eax + 0x56], 0xfdc8958b
jne 0x10038300
cmp dword [esp + eax + 0x5a], 0xf66ffff
jne 0x10038300
cmp dword [esp + eax + 0x5e], 0x661104b6
jne 0x10038300
cmp byte [esp + eax + 0x62], 0x35
jne 0x10038300
cmp dword [esp + eax + 0x65], 0xb0858966
jne 0x10038300
cmp dword [esp + eax + 0x69], 0xc7fffffe
jne 0x10038300
cmp dword [esp + eax + 0x6d], 0xfffea885
jne 0x10038300
cmp byte [esp + eax + 0x71], bl
jne 0x10038300
cmp dword [esp + eax + 0x76], 0xfea8958d
jne 0x10038300
cmp word [esp + eax + 0x7a], 0xffff
jne 0x10038300
mov dl, byte [esp + eax + 0x63]
mov byte [esp + 0x12], dl
mov edx, 3
jmp 0x10038300
cmp word [esp + eax + 0x50], 0x45c7
jne 0x10038300
cmp byte [esp + eax + 0x52], 0xfc
jne 0x10038300
cmp dword [esp + eax + 0x57], 0x3c85c766
jne 0x10038300
cmp word [esp + eax + 0x5b], 0xfffe
jne 0x10038300
cmp byte [esp + eax + 0x5d], bl
jne 0x10038300
cmp dword [esp + eax + 0x60], 0x4085c766
jne 0x10038300
cmp word [esp + eax + 0x64], 0xfffe
jne 0x10038300
cmp byte [esp + eax + 0x66], bl
jne 0x10038300
cmp dword [esp + eax + 0x69], 0x5485c766
jne 0x10038300
cmp word [esp + eax + 0x6d], 0xffff
jne 0x10038300
cmp byte [esp + eax + 0x6f], bl
jne 0x10038300
cmp word [esp + eax + 0x72], 0x1beb
jne 0x10038300
xor esi, esi
mov edx, 2
mov si, word [esp + eax + 0x70]
add eax, 0x23
jmp 0x10038300
cmp dword [esp + eax + 0x50], 0x8ba8558b
jne 0x10038300
cmp byte [esp + eax + 0x54], 0x42
jne 0x10038300
cmp dword [esp + eax + 0x56], 0xfdd88d8b
jne 0x10038300
cmp dword [esp + eax + 0x5a], 0xf66ffff
jne 0x10038300
cmp dword [esp + eax + 0x5e], 0x660814b6
jne 0x10038300
cmp word [esp + eax + 0x62], 0xf283
jne 0x10038300
cmp dword [esp + eax + 0x65], 0x815ff52
jne 0x10038300
cmp dword [esp + eax + 0x69], 0x8b004010
jne 0x10038300
cmp dword [esp + eax + 0x6d], 0x944d8dd0
jne 0x10038300
mov cl, byte [esp + eax + 0x64]
add eax, 0x20
mov byte [esp + 0x13], cl
mov edx, 1
inc eax
cmp eax, edi
jl 0x10038128
mov dword [esp + 0x20], esi
cmp eax, edi
jge 0x1003860b
cmp edx, 3
jne 0x1003860b
mov al, byte [esp + 0x13]
test al, al
je 0x1003860b
mov al, byte [esp + 0x12]
test al, al
je 0x1003860b
test esi, esi
jle 0x1003860b
mov eax, dword [esp + 0x18]
cmp eax, esi
jl 0x1003860b
lea esi, [eax - 0x1000]
xor ebx, ebx
mov ebp, 0x6e694265
mov ecx, 0x400
xor eax, eax
lea edi, [esp + 0x50]
lea edx, [esp + 0x14]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x18]
push 1
lea eax, [esp + 0x54]
push edx
mov edx, dword [esp + 0x24]
push eax
mov eax, dword [0x107ab964]
push 0x1000
push 0x1000
push esi
push ecx
push edx
push eax
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x100384fe
cmp dword [esp + 0x14], 0x1000
jne 0x100384fe
xor eax, eax
mov edx, 0x6c694665
mov ecx, 0x78456256
cmp dword [esp + eax + 0x50], ecx
jne 0x100383ce
cmp dword [esp + eax + 0x54], edx
jne 0x100383ce
cmp dword [esp + eax + 0x58], ebp
jne 0x100383ce
cmp byte [esp + eax + 0x5c], 0x64
je 0x100383d8
inc eax
cmp eax, 0xff4
jl 0x100383b5
jmp 0x100383e3
cmp eax, 0xff4
jl 0x100384f7
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x100384fe
sub esi, 0xff4
cmp eax, esi
jle 0x100383fb
mov esi, eax
inc ebx
cmp ebx, 0x1000
jl 0x10038357
mov ecx, 0x400
xor eax, eax
lea edi, [esp + 0x50]
mov ebp, dword [esp + 0x1c]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x14]
push 1
lea edx, [esp + 0x54]
push ecx
mov ecx, dword [0x107ab964]
push edx
push 0x1000
push 0x1000
push esi
push eax
push ebp
push ecx
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x100385af
mov eax, dword [esp + 0x14]
cmp eax, 0x400
jl 0x100385af
mov edi, dword [esp + 0x20]
lea ecx, [edi + 0x71]
lea edx, [ecx + 1]
cmp eax, edx
jl 0x1003860b
mov eax, 0xd
mov dl, byte [esp + 0x13]
mov bl, byte [esp + eax + 0x50]
xor bl, dl
mov byte [esp + eax + 0x50], bl
inc eax
cmp eax, 0x71
jl 0x10038473
cmp byte [esp + 0x5d], 0x4d
jne 0x1003860b
cmp byte [esp + 0x5e], 0x5a
jne 0x1003860b
lea eax, [edi + 0xc]
cmp eax, ecx
jge 0x100384b7
mov dl, byte [esp + 0x12]
mov bl, byte [esp + eax + 0x50]
xor bl, dl
mov byte [esp + eax + 0x50], bl
inc eax
cmp eax, ecx
jl 0x100384a4
mov ecx, dword [0x107ab964]
push 0xff3
lea eax, [esp + 0x61]
lea ebx, [esi + 0xd]
push 0xff3
push eax
push ebx
push ebp
push ecx
call fcn.10029d90
add esp, 0x18
test eax, eax
jne 0x1003851b
mov ecx, dword [0x107ab964]
push ebp
mov edx, dword [ecx]
call dword [edx + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1040
ret
add esi, eax
jmp 0x10038408
mov ecx, dword [0x107ab964]
mov eax, dword [esp + 0x1c]
push eax
mov edx, dword [ecx]
call dword [edx + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1040
ret
mov ecx, 0x400
xor eax, eax
lea edi, [esp + 0x50]
push 1
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x18]
lea edx, [esp + 0x54]
push ecx
push edx
lea esi, [eax - 0xd]
push 0x1000
push 0xd
push esi
push eax
mov eax, dword [0x107ab964]
push ebp
push eax
call fcn.100253e0
add esp, 0x24
test eax, eax
je 0x100385af
cmp dword [esp + 0x14], 0xd
jne 0x100385af
cmp dword [esp + 0x50], 0x74696853
jne 0x1003860b
cmp dword [esp + 0x54], 0x4f73492c
jne 0x1003860b
cmp dword [esp + 0x58], 0x21726576
jne 0x1003860b
cmp byte [esp + 0x5c], 0x21
jne 0x1003860b
test esi, esi
jle 0x100385af
mov ecx, dword [0x107ab964]
push 1
push 0x13a3
push esi
push ebp
push ecx
call fcn.10013800
add esp, 0x14
test eax, eax
jne 0x100385c8
mov ecx, dword [0x107ab964]
push ebp
mov edx, dword [ecx]
call dword [edx + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1040
ret
mov eax, dword [0x107ab964]
push ebx
push ebp
push eax
call fcn.10029b90
mov ecx, dword [0x107ab964]
add esp, 0xc
test eax, eax
jne 0x100385f5
mov edx, dword [ecx]
push ebp
call dword [edx + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1040
ret
mov eax, dword [ecx]
push ebp
call dword [eax + 0x18]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x1040
ret
mov ecx, dword [0x107ab964]
push ebp
mov eax, dword [ecx]
call dword [eax + 0x18]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1040
ret