Function at 0x100878f0
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov edi, ecx
mov eax, dword [0x101b9014]
xor eax, ebp
mov dword [esp + 0x38], eax
cmp dword [ecx + 0x28], 0
mov esi, dword [ebp + 8]
jne 0x1008791f
push esi
call fcn.100c8350
add esp, 4
test al, al
je 0x10087968
cmp byte [esi + 0xb], 0
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], edi
js 0x10087943
mov eax, dword [esi + 8]
mov dword [esp + 0x28], eax
movsd xmm0, qword [esi]
movsd qword [esp + 0x20], xmm0
jmp 0x10087a90
mov eax, esi
mov esi, dword [esi]
mov ebx, dword [eax + 4]
cmp ebx, 0xa
ja 0x10087a3f
mov byte [esp + 0x2b], bl
lea eax, [esp + 0x20]
cmp eax, esi
jbe 0x10087a74
jmp 0x10087a80
mov ebx, dword [edi + 0x38]
test ebx, ebx
jne 0x10087a22
mov ebx, edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x28], 0x9ffffff
lea edx, [esp + 0x20]
cmp edx, str.discarded
ja 0x100879ac
lea eax, [esp + 0x29]
cmp eax, str.discarded
ja 0x10087c81
mov dword [esp + 0x24], 0x65647261
mov dword [esp + 0x20], 0x63736964
mov word [esp + 0x28], 0x64
lea edi, [esp + 0x30]
mov ecx, ebx
push edx
push edi
call fcn.10087c90
push 0x48
call fcn.10145ba4
add esp, 4
mov esi, eax
mov ecx, eax
push edi
mov edi, ebx
push dword [ebx + 0x28]
lea eax, [esp + 0x28]
push eax
call fcn.10086cc0
mov ebx, dword [ebx + 0x38]
mov dword [edi + 0x38], esi
test ebx, ebx
je 0x10087a08
mov ecx, ebx
call fcn.10086d90
push ebx
call fcn.10145bd4
add esp, 4
cmp byte [esp + 0x2b], 0
mov esi, dword [esp + 0xc]
jns 0x10087a1f
push dword [esp + 0x20]
call fcn.10145bd4
add esp, 4
mov ebx, dword [edi + 0x38]
test esi, esi
je 0x10087c5f
mov ecx, esi
call fcn.10086d90
push esi
call fcn.10145bd4
add esp, 4
jmp 0x10087c5f
cmp ebx, 0x7ffffff0
jae 0x10087c76
mov edi, ebx
or edi, 0xf
inc edi
push edi
call fcn.10145ba4
add esp, 4
mov dword [esp + 0x20], eax
or edi, 0x80000000
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], ebx
mov edi, dword [esp + 0x14]
cmp eax, esi
ja 0x10087a80
lea ecx, [eax + ebx]
inc ecx
cmp ecx, esi
ja 0x10087c7e
inc ebx
push ebx
push esi
push eax
call fcn.10148eb0
add esp, 0xc
mov esi, dword [esp + 0xc]
mov dword [esp + 0x2c], esi
mov eax, edi
mov edi, dword [edi + 0x14]
test edi, edi
je 0x10087ab1
movzx ecx, byte [edi + 0x1b]
test cl, cl
jns 0x10087abb
mov ecx, dword [edi + 0x14]
mov esi, dword [edi + 0x10]
test ecx, ecx
jne 0x10087ac2
jmp 0x10087aca
lea esi, [eax + 0x14]
mov ebx, esi
jmp 0x10087bc7
lea esi, [edi + 0x10]
test ecx, ecx
je 0x10087aca
test esi, esi
je 0x10087bb7
movzx edx, byte [esp + 0x2b]
test dl, dl
cmovs edx, dword [esp + 0x24]
lea eax, [esp + 0x20]
cmovs eax, dword [esp + 0x20]
test edx, edx
mov dword [esp + 0x18], eax
je 0x10087af0
test eax, eax
je 0x10087c7b
nop
mov dword [esp + 0x10], edi
cmp edx, ecx
mov ebx, ecx
cmovb ebx, edx
test ebx, ebx
je 0x10087b30
mov edi, edx
mov eax, esi
mov esi, ecx
push ebx
mov dword [esp + 0x20], eax
push eax
push dword [esp + 0x20]
call fcn.10147f9d
add esp, 0xc
test eax, eax
je 0x10087b40
mov edx, edi
jns 0x10087b60
jmp 0x10087b48
cmp edx, ecx
jb 0x10087b48
jmp 0x10087b80
mov eax, esi
mov edx, edi
cmp edi, esi
jae 0x10087b60
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx]
mov esi, ebx
test eax, eax
jne 0x10087b8f
jmp 0x10087bc7
push ebx
push dword [esp + 0x1c]
push dword [esp + 0x24]
call fcn.10147f9d
mov edx, edi
mov ecx, esi
add esp, 0xc
test eax, eax
je 0x10087b80
js 0x10087b84
jmp 0x10087bba
cmp ecx, edx
jae 0x10087bba
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + 4]
test eax, eax
je 0x10087bc4
movzx ecx, byte [eax + 0x1b]
test cl, cl
jns 0x10087ba0
mov ecx, dword [eax + 0x14]
mov esi, dword [eax + 0x10]
jmp 0x10087ba3
lea esi, [eax + 0x10]
mov edi, eax
test ecx, ecx
je 0x10087af0
mov edi, eax
test esi, esi
jne 0x10087af0
int3
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
jmp 0x10087c2d
lea esi, [ebx + 4]
push 0x20
call fcn.10145ba4
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x28]
mov dword [edi + 0x18], eax
movsd xmm0, qword [esp + 0x20]
movsd qword [edi + 0x10], xmm0
xorps xmm0, xmm0
movaps xmmword [esp + 0x20], xmm0
mov eax, dword [esp + 0xc]
mov dword [edi + 0x1c], eax
mov dword [edi], 0
mov dword [edi + 4], 0
mov dword [edi + 8], ebx
mov dword [esi], edi
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx + 0x10]
mov ecx, dword [eax]
mov eax, edi
test ecx, ecx
je 0x10087c1a
mov dword [ebx + 0x10], ecx
mov eax, dword [esi]
push eax
push dword [ebx + 0x14]
call fcn.100384c0
add esp, 8
inc dword [ebx + 0x18]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x2c], 0
test esi, esi
je 0x10087c49
mov ecx, esi
call fcn.10086d90
push esi
call fcn.10145bd4
add esp, 4
cmp byte [esp + 0x2b], 0
jns 0x10087c5c
push dword [esp + 0x20]
call fcn.10145bd4
add esp, 4
mov ebx, dword [edi + 0x1c]
mov ecx, dword [esp + 0x38]
xor ecx, ebp
call fcn.101465a3
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
call fcn.1015b4f0
int3
int3
int3