Function at 0x10093520
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x1012d591
mov eax, dword fs:[0]
push eax
sub esp, 0x130
push ebx
push ebp
push esi
push edi
mov eax, dword [0x101636d0]
xor eax, esp
push eax
lea eax, [esp + 0x144]
mov dword fs:[0], eax
mov eax, dword [esp + 0x158]
mov esi, dword [esp + 0x154]
mov ebp, dword [esp + 0x160]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0x170]
xor ebx, ebx
mov dword [esp + 0x34], esi
mov dword [esp + 0xa0], edx
mov dword [esp + 0x94], ebp
mov dword [esp + 0x90], eax
mov dword [esp + 0xa4], ecx
cmp dword [esp + 0x15c], ebx
jne 0x100935c8
mov ecx, esi
call fcn.100619a0
push 0x101491dc
push 0x1013c7e4
mov edx, eax
call fcn.10062cd0
add esp, 8
xor al, al
jmp 0x10094496
mov edx, dword [0x1016c5c8]
push edx
lea eax, [esp + 0xa0]
push eax
mov dword [esp + 0xa4], ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
cmp dword [esp + 0x9c], ebx
jne 0x100935fb
mov ecx, esi
call fcn.100619a0
push 0x10148df0
jmp 0x100935b2
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x68], vtable.t_lockerMemSharable.0
push esi
mov edi, 0x10166c78
mov dword [esp + 0x150], ebx
call fcn.100657b0
test al, al
je 0x10093669
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x48]
mov dword [esp + 0x70], edi
push edx
mov edi, esi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x2c], ebx
call fcn.100912d0
add esp, 8
test al, al
jne 0x1009367a
push 0x10148d10
mov ecx, esi
call fcn.10001360
mov edi, 0x10166c78
mov dword [esp + 0x14c], 0xffffffff
call fcn.100658f0
xor al, al
jmp 0x10094496
mov ecx, esi
call fcn.100619a0
push 0x101491ec
jmp 0x100935b2
call fcn.10098b10
mov edx, dword [esp + 0x44]
mov edi, eax
mov eax, dword [esp + 0x24]
mov ecx, esi
call fcn.1009f920
test al, al
jne 0x100936bb
push str.Attach
mov ecx, esi
call fcn.10001360
lea esi, [esp + 0x68]
mov dword [esp + 0x14c], 0xffffffff
call fcn.10069d10
xor al, al
jmp 0x10094496
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x78]
push ecx
mov edi, esi
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x2c], ebx
call fcn.10091360
add esp, 8
test al, al
jne 0x100936e2
push 0x10148d30
jmp 0x10093699
call fcn.10098bd0
mov edx, dword [esp + 0x74]
mov edi, eax
mov eax, dword [esp + 0x24]
mov ecx, esi
call fcn.100a4e70
test al, al
je 0x10093694
lea edx, [esp + 0x48]
push edx
call fcn.1007fca0
push ebx
mov byte [esp + 0x150], 1
call fcn.100d1227
add esp, 4
mov edi, eax
mov dword [esp + 0x30], edx
call fcn.100d4489
imul eax, edi
push eax
call fcn.100d4477
add esp, 4
cmp dword [esp + 0x15c], ebx
mov dword [esp + 0x64], ebx
jle 0x10094238
nop
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0xa0]
lea esi, [ecx + eax*4]
mov ecx, dword [esp + 0x168]
push ecx
lea eax, [edx + eax*4]
lea edx, [esp + 0x2c]
push edx
mov edx, dword [esp + 0x68]
lea ecx, [esp + 0x48]
push ecx
push eax
push esi
push edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x5c], eax
call fcn.100930b0
cmp eax, ebx
je 0x100937c0
mov eax, dword [esp + 0x28]
cmp eax, ebx
jle 0x1009421e
mov esi, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov edi, edi
lea ebx, [esp + 0x1c]
lea edi, [esp + 0x48]
mov dword [esp + 0x1c], esi
call fcn.100bb6f0
add esi, 0x18
sub dword [esp + 0x24], 1
jne 0x100937a0
jmp 0x1009421c
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x74], ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x2c], ebx
call fcn.1007fca0
lea ecx, [esp + 0x28]
mov byte [esp + 0x14c], 2
mov edx, dword [esi]
push ecx
push edx
call fcn.10098b10
mov esi, dword [esp + 0x3c]
lea edx, [esp + 0x40]
mov ecx, esi
mov ebx, eax
call fcn.1009fa80
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
push eax
push ecx
lea edx, [esp + 0x80]
push edx
push esi
call fcn.10098bd0
push eax
call fcn.100a4ef0
lea esi, [esp + 0x2c]
lea edi, [esp + 0x78]
call fcn.10098c90
mov ebp, dword [esp + 0x174]
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
jmp 0x10093850
mov eax, dword [esp + 0x88]
mov esi, eax
cmp dword [esp + 0x84], eax
jbe 0x1009386e
call fcn.100d1cc3
mov eax, dword [esp + 0x88]
test edi, edi
je 0x10093878
cmp edi, dword [esp + 0x78]
je 0x10093884
call fcn.100d1cc3
mov eax, dword [esp + 0x88]
cmp ebx, esi
je 0x10093a0c
test edi, edi
jne 0x10093941
call fcn.100d1cc3
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x100938a5
call fcn.100d1cc3
mov eax, dword [ebx]
mov ecx, dword [eax + 0x18]
mov edx, dword [esp + 0x34]
push ecx
push edx
call fcn.10092990
add esp, 8
test al, al
je 0x100939e5
lea esi, [esp + 0x2c]
call fcn.10098cd0
mov eax, dword [eax]
cmp dword [eax + 0x18], 1
je 0x100939e5
call fcn.10098cd0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x18]
call fcn.100a0a70
test al, al
je 0x1009398b
call fcn.10098cd0
mov edx, dword [eax]
mov eax, dword [edx + 0xc]
mov ecx, dword [esp + 0x74]
lea eax, [eax + ecx + 4]
cmp ebp, 2
jne 0x10093948
cmp byte [eax], 0x47
jne 0x1009391a
cmp byte [eax + 1], 0x49
jne 0x1009391a
cmp byte [eax + 2], 0x46
jne 0x1009391a
cmp byte [eax + 3], 0x38
je 0x1009398b
push ebx
push edi
lea edi, [esp + 0xdc]
lea esi, [esp + 0x80]
call fcn.1007c390
mov edi, dword [eax]
mov ebx, dword [eax + 4]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ebx
jmp 0x10093850
mov eax, dword [edi]
jmp 0x1009389b
cmp ebp, 1
jne 0x1009398b
cmp byte [eax], 0x89
jne 0x10093964
cmp byte [eax + 1], 0x50
jne 0x10093964
cmp byte [eax + 2], 0x4e
jne 0x10093964
cmp byte [eax + 3], 0x47
je 0x1009398b
push ebx
push edi
lea edi, [esp + 0xbc]
lea esi, [esp + 0x80]
call fcn.1007c390
mov edi, dword [eax]
mov ebx, dword [eax + 4]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ebx
jmp 0x10093850
cmp byte [esp + 0x168], 1
jne 0x100939d0
lea esi, [esp + 0x2c]
call fcn.10098cd0
mov edx, dword [eax]
cmp dword [edx + 0x18], 0x3fffffff
jl 0x100939d0
push ebx
push edi
lea edi, [esp + 0xcc]
lea esi, [esp + 0x80]
call fcn.1007c390
mov edi, dword [eax]
mov ebx, dword [eax + 4]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ebx
jmp 0x10093850
lea edi, [esp + 0xbc]
lea esi, [esp + 0x2c]
call fcn.10098e60
jmp 0x10093839
push ebx
push edi
lea edi, [esp + 0xb4]
lea esi, [esp + 0x80]
call fcn.1007c390
mov edi, dword [eax]
mov ebx, dword [eax + 4]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ebx
jmp 0x10093850
sub eax, dword [esp + 0x84]
mov dword [esp + 0x3c], 0
sar eax, 2
mov ebp, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov eax, ecx
mov dword [esp + 0x38], ebp
lea esi, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x10093a30
sub eax, esi
sar eax, 1
push ecx
mov ecx, dword [esp + 0x64]
mov ebx, eax
call fcn.10098900
mov edi, eax
test edi, edi
je 0x10094270
mov esi, dword [esp + 0x34]
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x40]
push edx
push edi
lea eax, [esp + 0x74]
push eax
push esi
call fcn.100a3360
mov ebx, dword [esp + 0x74]
mov ecx, ebx
mov edx, eax
call fcn.100a1110
xor eax, eax
push edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], eax
call fcn.100a4260
push eax
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x24]
mov edx, ebx
call fcn.100a3990
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x2c]
push edx
push edi
push ebx
call fcn.100a08d0
call fcn.100a00d0
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x98]
mov eax, dword [esp + 0x40]
test ebp, ebp
jne 0x10093b3b
test ecx, ecx
jne 0x10093b3b
test edx, edx
jne 0x10093b3b
test eax, eax
jne 0x10093b3b
mov eax, dword [esp + 0x44]
mov dword [eax], edx
cmp byte [esp + 0x16c], dl
je 0x10093b25
mov ecx, dword [esp + 0xa4]
test ecx, ecx
je 0x10093b25
mov eax, dword [esp + 0x64]
lea edx, [eax + eax*2]
lea edi, [ecx + edx*4]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x17]
mov dword [edi], 0
mov edx, dword [ecx]
push eax
push edx
push esi
mov byte [esp + 0x23], 0
call fcn.10093380
add esp, 0xc
cmp byte [esp + 0x17], 0
je 0x10093b25
mov dword [edi], 1
lea esi, [esp + 0x78]
mov byte [esp + 0x14c], 1
call fcn.100781d0
jmp 0x10094215
add eax, edx
add eax, ecx
add eax, ebp
lea eax, [eax + eax*2]
shl eax, 4
push eax
mov ecx, ebx
call fcn.10001ee0
mov dword [esp + 0x20], eax
test eax, eax
jne 0x10093b6d
lea esi, [esp + 0x78]
mov byte [esp + 0x14c], 1
call fcn.100781d0
jmp 0x10094215
xor ebp, ebp
cmp dword [esp + 0x38], ebp
mov dword [esp + 0x18], ebp
jle 0x10093c47
mov esi, dword [esp + 0x20]
add esi, 8
jmp 0x10093b90
mov ecx, dword [esp + 0x88]
sub ecx, dword [esp + 0x84]
sar ecx, 2
cmp ebp, ecx
jb 0x10093baa
call fcn.100d1cc3
mov edx, dword [esp + 0x84]
mov edi, dword [edx + ebp*4]
mov eax, dword [edi + 0x18]
mov dword [esi - 8], eax
mov ecx, dword [edi + 0x1c]
mov eax, dword [esp + 0x74]
mov dword [esi - 4], ecx
mov edx, dword [edi + 0xc]
add eax, edx
mov dword [esi], eax
mov ebx, dword [eax]
add eax, 4
mov dword [esi], eax
mov eax, dword [edi + 0x10]
add eax, 0xfffffffc
mov dword [esi + 4], eax
cmp eax, 0x200000
ja 0x10093c3c
mov dword [esi + 0x10], 0
cmp dword [esi - 8], 0x3fffffff
jae 0x10093bfa
xor ecx, ecx
mov word [esi + 0x24], cx
jmp 0x10093c03
mov edx, 1
mov word [esi + 0x24], dx
mov eax, dword [edi + 0x2c]
mov dword [esi + 8], eax
mov ecx, dword [edi + 0x30]
mov dword [esi + 0xc], ecx
call fcn.100d4489
cdq
mov ecx, SysReAllocString
idiv ecx
mov eax, edx
cdq
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], edx
mov edx, dword [edi + 0x3c]
mov dword [esi + 0x20], edx
mov eax, dword [edi + 0x10]
sub eax, 4
cmp ebx, eax
jne 0x10093c3c
inc dword [esp + 0x18]
add esi, 0x30
inc ebp
cmp ebp, dword [esp + 0x38]
jl 0x10093b90
cmp dword [esp + 0x70], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x38], ebx
jle 0x10093d66
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x20]
mov eax, ebx
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x70]
shl ecx, 4
lea esi, [ecx + edx + 0x10]
add edi, 6
mov dword [esp + 0x3c], eax
lea esp, [esp]
mov ecx, dword [edi - 4]
mov dword [esi - 0x10], ecx
mov edx, dword [edi]
mov dword [esi - 0xc], edx
mov eax, dword [edi + 4]
mov dword [esi], eax
mov ecx, dword [edi + 8]
mov dword [esi + 4], ecx
call fcn.100d4489
cdq
mov ecx, SysReAllocString
idiv ecx
mov eax, edx
cdq
mov dword [esi + 0x10], eax
xor eax, eax
mov dword [esi + 0x14], edx
test ebx, ebx
jle 0x10093cd4
mov edx, dword [esi - 0x10]
mov ecx, dword [esp + 0x20]
lea esp, [esp]
cmp edx, dword [ecx]
jne 0x10093ccc
mov ebp, dword [esi - 0xc]
cmp ebp, dword [ecx + 4]
je 0x10093ce5
inc eax
add ecx, 0x30
cmp eax, ebx
jl 0x10093cc0
cmp dword [esi - 0x10], 0x3fffffff
jae 0x10093d23
xor ecx, ecx
mov word [esi + 0x1c], cx
jmp 0x10093d2c
mov ecx, dword [esi + 4]
mov ebp, dword [esi]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x20]
shl edx, 4
mov ebx, dword [edx + eax + 0x10]
lea eax, [edx + eax + 0x10]
mov edx, dword [eax + 4]
cmp ecx, edx
jb 0x10093d16
ja 0x10093d09
cmp ebp, ebx
jbe 0x10093d16
mov ebx, ebp
mov dword [eax], ebx
mov ebx, dword [esp + 0x38]
mov dword [eax + 4], ecx
jmp 0x10093d58
mov ecx, edx
mov dword [eax], ebx
mov ebx, dword [esp + 0x38]
mov dword [eax + 4], ecx
jmp 0x10093d58
mov edx, 1
mov word [esi + 0x1c], dx
mov eax, dword [edi + 0xc]
mov dword [esi + 0x18], eax
mov ecx, 1
mov dword [esi + 8], ecx
mov eax, dword [edi + 0x16]
mov dword [esi - 8], eax
test eax, eax
je 0x10093d58
mov eax, dword [edi + 0x1a]
mov dword [esi - 4], eax
cmp eax, 0x200000
ja 0x10093d58
add dword [esp + 0x18], ecx
add esi, 0x30
add edi, 0x24
sub dword [esp + 0x3c], 1
jne 0x10093c80
mov edi, dword [esp + 0x1c]
test edi, edi
jne 0x10093d78
cmp dword [esp + 0x28], edi
je 0x10093f20
mov eax, dword [esp + 0x98]
mov ebp, dword [esp + 0x18]
mov ebx, ebp
test eax, eax
jle 0x10093e4e
mov edx, dword [esp + 0x20]
lea ecx, [ebp + ebp*2]
shl ecx, 4
lea esi, [ecx + edx + 0x2c]
add edi, 6
mov dword [esp + 0x1c], eax
mov eax, dword [edi - 4]
mov dword [esi - 0x2c], eax
mov ecx, dword [edi]
mov dword [esi - 0x28], ecx
mov edx, dword [edi + 4]
mov dword [esi - 0x1c], edx
mov eax, dword [edi + 8]
mov dword [esi - 0x18], eax
call fcn.100d4489
cdq
mov ecx, SysReAllocString
idiv ecx
mov eax, edx
cdq
mov dword [esi - 0xc], eax
mov dword [esi - 8], edx
cmp dword [esi - 0x2c], 0x3fffffff
jae 0x10093de0
xor edx, edx
mov word [esi], dx
jmp 0x10093de8
mov eax, 1
mov word [esi], ax
mov ecx, dword [edi + 0xc]
mov dword [esi - 4], ecx
mov dword [esi - 0x14], 3
mov eax, dword [edi + 0x16]
mov dword [esi - 0x24], eax
test eax, eax
je 0x10093e40
mov eax, dword [edi + 0x1a]
mov dword [esi - 0x20], eax
cmp eax, 0x200000
ja 0x10093e40
xor ecx, ecx
test ebx, ebx
jle 0x10093e38
mov edx, dword [esi - 0x2c]
mov eax, dword [esp + 0x20]
lea esp, [esp]
cmp edx, dword [eax]
jne 0x10093e30
mov ebp, dword [esi - 0x28]
cmp ebp, dword [eax + 4]
mov ebp, dword [esp + 0x18]
je 0x10093e40
inc ecx
add eax, 0x30
cmp ecx, ebx
jl 0x10093e20
inc ebp
mov dword [esp + 0x18], ebp
add esi, 0x30
add edi, 0x24
sub dword [esp + 0x1c], 1
jne 0x10093da3
mov eax, dword [esp + 0x40]
mov ebx, ebp
test eax, eax
jle 0x10093f24
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
lea edx, [ebp + ebp*2]
add edi, 6
shl edx, 4
lea esi, [edx + ecx + 0x2c]
mov dword [esp + 0x1c], eax
jmp 0x10093e80
mov eax, dword [edi - 4]
mov dword [esi - 0x2c], eax
cmp eax, 0x3fffffff
jae 0x10093e94
xor edx, edx
mov word [esi], dx
jmp 0x10093e9c
mov eax, 1
mov word [esi], ax
mov ecx, dword [edi]
mov dword [esi - 0x28], ecx
mov edx, dword [edi + 4]
mov dword [esi - 0x1c], edx
mov eax, dword [edi + 8]
mov dword [esi - 0x18], eax
call fcn.100d4489
cdq
mov ecx, SysReAllocString
idiv ecx
mov eax, edx
cdq
mov dword [esi - 0xc], eax
mov dword [esi - 8], edx
mov edx, dword [edi + 0xc]
mov dword [esi - 4], edx
mov dword [esi - 0x14], 2
mov eax, dword [edi + 0x16]
mov dword [esi - 0x24], eax
test eax, eax
je 0x10093f10
mov eax, dword [edi + 0x1a]
xor ecx, ecx
mov dword [esi - 0x20], eax
test ebx, ebx
jle 0x10093f08
mov edx, dword [esi - 0x2c]
mov eax, dword [esp + 0x20]
lea ecx, [ecx]
cmp edx, dword [eax]
jne 0x10093f00
mov ebp, dword [esi - 0x28]
cmp ebp, dword [eax + 4]
mov ebp, dword [esp + 0x18]
je 0x10093f10
inc ecx
add eax, 0x30
cmp ecx, ebx
jl 0x10093ef0
inc ebp
mov dword [esp + 0x18], ebp
add esi, 0x30
add edi, 0x24
sub dword [esp + 0x1c], 1
jne 0x10093e80
jmp 0x10093f24
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0xa0]
mov dword [ecx], ebp
push edx
lea ecx, [ebp + ebp*2]
shl ecx, 4
add ecx, esi
mov edx, ecx
sub edx, esi
mov eax, 0x2aaaaaab
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push ecx
push esi
call fcn.100997a0
add esp, 0x10
or ebx, 0xffffffff
xor eax, eax
test ebp, ebp
jle 0x10093fd0
mov edx, esi
lea esi, [ebx + 4]
lea ecx, [ecx]
mov ecx, dword [edx]
cmp ecx, 1
je 0x10093fec
cmp ecx, 0x4d
jl 0x10093f81
cmp ecx, 0x50
jle 0x10093fec
cmp dword [edx + 0x28], esi
jb 0x10093f88
mov ebx, eax
inc eax
add edx, 0x30
cmp eax, ebp
jl 0x10093f70
cmp ebx, 0xffffffff
je 0x10093fd0
test ebx, ebx
je 0x10093fd0
mov edx, dword [esp + 0x20]
lea eax, [ebx + ebx*2]
shl eax, 4
mov ecx, 0xc
mov esi, edx
lea edi, [esp + 0x10c]
rep movsd dword es:[edi], dword [esi]
add eax, edx
mov ecx, 0xc
mov esi, eax
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x10c]
mov ecx, 0xc
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x60]
mov eax, dword [edi + 0x10]
lea esi, [ebp + ebp*2]
add esi, esi
add esi, esi
xor ebx, ebx
add esi, esi
cmp eax, ebx
jne 0x10094026
mov ecx, dword [edi + 0x14]
jmp 0x10094028
cmp eax, 0xffffffff
je 0x10093f90
test eax, eax
je 0x10093fd0
mov edx, dword [esp + 0x20]
mov ecx, 0xc
mov esi, edx
lea edi, [esp + 0xdc]
rep movsd dword es:[edi], dword [esi]
lea ecx, [eax + eax*2]
shl ecx, 4
lea eax, [ecx + edx]
mov ecx, 0xc
mov esi, eax
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0xdc]
jmp 0x10093fc7
mov ecx, dword [eax]
mov edx, dword [edi + 0x14]
cmp ecx, edx
jae 0x10094044
lea ebx, [ecx + esi]
cmp ebx, edx
ja 0x10094042
add dword [eax], esi
lea ecx, [ecx + eax + 8]
mov esi, ecx
xor ebx, ebx
jmp 0x1009406c
xor ebx, ebx
cmp esi, edx
jbe 0x1009404a
mov edx, esi
mov ecx, dword [edi + 4]
add edx, 8
push edx
call ecx
add esp, 4
cmp eax, ebx
je 0x1009406a
mov edx, dword [edi + 0x10]
mov dword [eax], esi
mov dword [eax + 4], edx
mov dword [edi + 0x10], eax
lea esi, [eax + 8]
jmp 0x1009406c
xor esi, esi
mov dword [esp + 0x28], esi
cmp esi, ebx
je 0x100942b8
cmp ebp, ebx
jle 0x1009416c
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0xc
add edi, 8
mov dword [esp + 0x1c], eax
mov ecx, dword [edi - 8]
mov dword [esi - 0xc], ecx
mov edx, dword [edi - 4]
mov dword [esi - 8], edx
mov eax, dword [edi]
lea ebp, [esi - 0xc]
mov dword [esi - 4], eax
mov ecx, dword [edi + 4]
mov dword [esi], ecx
mov dx, word [edi + 0x24]
mov word [esi + 4], dx
mov eax, dword [edi + 0x10]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov edx, eax
sub edx, ecx
sar edx, 2
xor ebx, ebx
test edx, edx
jbe 0x10094109
mov edi, edi
lea eax, [esp + 0x48]
call fcn.10098de0
mov eax, dword [eax]
mov ecx, dword [ebp]
cmp ecx, dword [eax]
jne 0x100940f5
lea eax, [esp + 0x48]
call fcn.10098de0
mov edx, dword [eax]
mov eax, dword [esi - 8]
cmp eax, dword [edx + 4]
je 0x1009415b
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov edx, eax
sub edx, ecx
inc ebx
sar edx, 2
cmp ebx, edx
jb 0x100940d0
mov dword [esp + 0x3c], ebp
test ecx, ecx
jne 0x10094115
xor edx, edx
jmp 0x1009411e
mov edx, dword [esp + 0x5c]
sub edx, ecx
sar edx, 2
mov ebx, eax
sub ebx, ecx
sar ebx, 2
cmp ebx, edx
jae 0x10094134
mov dword [eax], ebp
add eax, 4
mov dword [esp + 0x58], eax
jmp 0x1009415b
mov ebx, eax
cmp ecx, eax
jbe 0x1009413f
call fcn.100d1cc3
mov eax, dword [esp + 0x48]
push ebx
push eax
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0xd8]
push ecx
lea eax, [esp + 0x58]
call fcn.1009fcf0
add edi, 0x30
add esi, 0x18
sub dword [esp + 0x1c], 1
jne 0x10094092
mov edx, dword [esp + 0x168]
mov ebx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x30]
push ecx
push edx
push ebx
call fcn.10093190
xor esi, esi
cmp byte [esp + 0x16c], 0
je 0x100941d7
mov ecx, dword [esp + 0xa4]
cmp ecx, esi
je 0x100941d7
mov eax, dword [esp + 0x64]
lea eax, [eax + eax*2]
lea edi, [ecx + eax*4]
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x17]
mov dword [edi], esi
mov edx, dword [ebx]
push ecx
push edx
push eax
mov byte [esp + 0x23], 0
call fcn.10093380
add esp, 0xc
cmp byte [esp + 0x17], 0
je 0x100941d7
mov dword [edi], 1
mov byte [esp + 0x14c], 1
mov eax, dword [esp + 0x84]
cmp eax, esi
je 0x100941f3
push eax
call fcn.100cf5f9
add esp, 4
mov ecx, dword [esp + 0x78]
push ecx
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], esi
call fcn.100cf5f9
add esp, 4
mov ebp, dword [esp + 0x94]
xor ebx, ebx
mov eax, dword [esp + 0x64]
inc eax
cmp eax, dword [esp + 0x15c]
mov dword [esp + 0x64], eax
jl 0x10093740
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x90]
sub eax, ecx
sar eax, 2
mov dword [edx], eax
cmp eax, ebx
jne 0x10094387
mov dword [ebp], ebx
cmp ecx, ebx
je 0x10094266
push ecx
call fcn.100cf5f9
add esp, 4
mov eax, dword [esp + 0x48]
push eax
jmp 0x1009446c
mov ecx, dword [esp + 0x34]
push str.alloc_memory_failed.
call fcn.10001360
lea esi, [esp + 0x78]
call fcn.100781d0
mov eax, dword [esp + 0x54]
xor esi, esi
cmp eax, esi
je 0x1009429a
push eax
call fcn.100cf5f9
add esp, 4
mov edx, dword [esp + 0x48]
push edx
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], esi
call fcn.100cf5f9
add esp, 4
jmp 0x100936a0
mov esi, dword [esp + 0x34]
cmp dword [esi], ebx
je 0x100942cc
mov esi, dword [esi]
add esi, 0x124
cmp dword [esi], ebx
jne 0x100942c0
push 0x128
call fcn.100cfcae
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x100942ee
call fcn.10062500
mov dword [edi + 0x124], ebx
mov edx, edi
jmp 0x100942f0
xor edx, edx
push str.malloc_failed.
push 0x1013c7e4
mov dword [esi], edx
call fcn.10062cd0
mov eax, dword [esp + 0x8c]
add esp, 8
cmp eax, ebx
je 0x10094318
push eax
call fcn.100cf5f9
add esp, 4
mov eax, dword [esp + 0x78]
push eax
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], ebx
call fcn.100cf5f9
mov eax, dword [esp + 0x58]
add esp, 4
cmp eax, ebx
je 0x1009434b
push eax
call fcn.100cf5f9
add esp, 4
mov ecx, dword [esp + 0x48]
push ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
call fcn.100cf5f9
mov dword [esp + 0x150], 0xffffffff
mov edi, dword [esp + 0x70]
add esp, 4
cmp edi, ebx
je 0x100935c1
call fcn.100658f0
xor al, al
jmp 0x10094496
mov ecx, dword [esp + 0x60]
lea eax, [eax + eax*2]
add eax, eax
add eax, eax
add eax, eax
push eax
call fcn.10001ee0
mov dword [ebp], eax
cmp eax, ebx
jne 0x100943dc
push 0x1013fc08
mov ecx, esi
call fcn.10001360
mov eax, dword [esp + 0x54]
cmp eax, ebx
je 0x100943be
push eax
call fcn.100cf5f9
add esp, 4
mov ecx, dword [esp + 0x48]
push ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
call fcn.100cf5f9
add esp, 4
jmp 0x100936a0
mov edx, dword [esp + 0x90]
xor edi, edi
cmp dword [edx], ebx
jle 0x10094456
xor esi, esi
jmp 0x100943f0
mov eax, dword [esp + 0x58]
sub eax, dword [esp + 0x54]
sar eax, 2
cmp edi, eax
jb 0x10094404
call fcn.100d1cc3
mov ecx, dword [esp + 0x54]
mov eax, dword [ecx + edi*4]
mov ecx, dword [eax]
mov edx, dword [ebp]
mov dword [esi + edx], ecx
mov ecx, dword [eax + 4]
mov edx, dword [ebp]
mov dword [edx + esi + 4], ecx
mov ecx, dword [eax + 8]
mov edx, dword [ebp]
mov dword [edx + esi + 8], ecx
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp]
mov dword [edx + esi + 0xc], ecx
mov cx, word [eax + 0x10]
mov edx, dword [ebp]
mov word [edx + esi + 0x10], cx
mov edx, dword [ebp]
mov eax, dword [eax + 0x14]
mov ecx, dword [esp + 0x90]
mov dword [edx + esi + 0x14], eax
inc edi
add esi, 0x18
cmp edi, dword [ecx]
jl 0x100943f0
mov eax, dword [esp + 0x54]
cmp eax, ebx
je 0x10094467
push eax
call fcn.100cf5f9
add esp, 4
mov edx, dword [esp + 0x48]
push edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
call fcn.100cf5f9
add esp, 4
lea esi, [esp + 0x68]
mov dword [esp + 0x14c], 0xffffffff
call fcn.10069d10
mov al, 1
mov ecx, dword [esp + 0x144]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x13c
ret