Function at 0x10001c90
Capabilities:
Encode data using xor
Get thread local storage value
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1320
call fcn.102d9eb0
mov dword [esp + 0x10], edx
mov esi, ecx
call sub.KERNEL32.dll_GetProcessHeap
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x100044ef
lea ecx, [esp + 0x508]
mov edx, 2
mov dword [esp + 0x508], eax
mov dword [esp + 0x50c], 2
mov dword [esp + 0x510], 0
call fcn.1004f260
mov eax, dword [esp + 0x508]
mov ebx, dword [esp + 0x510]
mov dword [esp + 0xb0], esi
mov dword [eax + ebx*4], 0xffff
mov dword [eax + ebx*4 + 4], 0xffff
add ebx, 2
mov dword [esp + 0x510], ebx
mov eax, dword [esp + 0x50c]
cmp eax, ebx
jbe 0x10001d55
mov esi, dword [esp + 0x508]
lea edi, [ebx*4]
test edi, edi
je 0x10001d5e
call sub.KERNEL32.dll_GetProcessHeap
push edi
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
mov esi, eax
test eax, eax
jne 0x10001d7a
mov ecx, edi
jmp 0x100044f4
mov esi, dword [esp + 0x508]
jmp 0x10001d8f
shl eax, 2
mov edi, esi
mov esi, 2
test eax, eax
je 0x10001d7a
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, ebx
mov dword [esp + 0x508], esi
and eax, 0x3fffffff
mov dword [esp + 0x50c], eax
call sub.KERNEL32.dll_GetProcessHeap
push 0x70
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004500
mov word [esp + 0x540], 1
mov dword [esp + 0x520], esi
mov dword [esp + 0x524], ebx
mov dword [esp + 0x528], eax
mov eax, 0xfffffffd
mov dword [esp + 0x52c], 2
mov dword [esp + 0x530], 0
mov dword [esp + 0x534], 4
mov dword [esp + 0x538], 0
mov dword [esp + 0x53c], 0
mov dword [esp + 0x50c], 0
mov dword [esp + 0x508], 0
nop word [eax + eax]
test eax, eax
je 0x10001e52
movzx ecx, byte [eax + 0x10397ed7]
inc eax
cmp cl, 9
je 0x10001e20
add cl, 0xe0
cmp cl, 0x5f
jb 0x10001e20
mov ecx, 0x10397ed7
mov edx, 0x14
push 0x10397eec
call fcn.1004d820
add esp, 4
ud2
xorps xmm0, xmm0
lea esi, [esp + 0x508]
lea edi, [esp + 0x298]
mov dword [esp + 0x298], str._invalid_header_value
mov dword [esp + 0x29c], 3
mov dword [esp + 0x2a0], 0
mov dword [esp + 0x2a4], 0x10397ea4
mov byte [esp + 0x2a8], 0
mov dword [esp + 0x400], 0
lea eax, [esp + 0x3f0]
lea ecx, [esp + 0x118]
movaps xmmword [esp + 0x3f0], xmm0
mov edx, esi
push edi
push eax
call fcn.1004d840
add esp, 8
cmp byte [esp + 0x128], 2
je 0x10001ef1
mov eax, dword [esp + 0x124]
lea ecx, [esp + 0x120]
push dword [esp + 0x11c]
push dword [esp + 0x11c]
push ecx
call dword [eax + 4]
add esp, 0xc
movsd xmm1, qword [esp + 0x510]
movsd xmm2, qword [esp + 0x518]
movsd xmm0, qword [esp + 0x508]
mov eax, dword [esp + 0x28f]
mov ecx, dword [esp + 0xfb]
movsd qword [esp + 0x120], xmm1
movsd xmm1, qword [esp + 0x520]
movsd qword [esp + 0x128], xmm2
movsd xmm2, qword [esp + 0x528]
movsd qword [esp + 0x118], xmm0
mov dword [esp + 0x22f], eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0xb7], ecx
movsd xmm3, qword [esp + 0x118]
movsd qword [esp + 0x130], xmm1
movsd xmm1, qword [esp + 0x530]
movsd qword [esp + 0x138], xmm2
movsd xmm2, qword [esp + 0x538]
mov dword [esp + 0xb4], eax
movsd qword [esp + 0x298], xmm3
movsd xmm3, qword [esp + 0x270]
movsd qword [esp + 0x140], xmm1
movsd xmm1, qword [esp + 0x540]
movsd qword [esp + 0x148], xmm2
movsd xmm2, qword [esp + 0x128]
movsd qword [esp + 0x200], xmm3
movsd qword [esp + 0x150], xmm1
movsd xmm1, qword [esp + 0x120]
movsd qword [esp + 0x2a8], xmm2
movsd xmm2, qword [esp + 0x138]
movsd qword [esp + 0x2a0], xmm1
movsd xmm1, qword [esp + 0x130]
movsd qword [esp + 0x2b8], xmm2
movsd xmm2, qword [esp + 0x148]
movsd qword [esp + 0x2b0], xmm1
movsd xmm1, qword [esp + 0x140]
movsd qword [esp + 0x2c8], xmm2
movsd xmm2, qword [esp + 0x240]
movsd qword [esp + 0x2c0], xmm1
movsd xmm1, qword [esp + 0x150]
movsd qword [esp + 0x210], xmm2
movsd xmm2, qword [esp + 0x280]
movsd qword [esp + 0x2d0], xmm1
movsd xmm1, qword [esp + 0x248]
movsd qword [esp + 0x220], xmm2
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [esp + 0x278]
movsd qword [esp + 0x208], xmm1
movsd xmm1, qword [esp + 0x288]
movsd qword [esp + 0x228], xmm1
call sub.KERNEL32.dll_GetProcessHeap
push 0xd10
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004507
mov edi, eax
push 0xd00
push esi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov dword [edi + 0xd04], 0
mov dword [edi + 0xd00], 0
mov dword [edi + 0xd0c], 0
mov dword [edi + 0xd08], 0
call sub.KERNEL32.dll_GetProcessHeap
push 0x34
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1000450e
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], edi
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x1c], 0
mov dword [eax + 0x20], 1
mov dword [eax + 0x24], edi
mov dword [eax + 0x28], 0
mov dword [eax + 0x2c], edi
mov byte [eax + 0x30], 0
mov esi, eax
movzx eax, word [esp + 0x508]
mov word [esi + 0x31], ax
mov al, byte [esp + 0x50a]
mov byte [esi + 0x33], al
lock inc dword [esi]
jle 0x10004482
mov dword [esp + 0x44], esi
call sub.KERNEL32.dll_GetProcessHeap
push 0x24
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004515
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov edi, eax
lock inc dword [eax]
jle 0x10004482
mov dword [esp + 0x4c], esi
mov dword [esp + 0x1c], edi
call sub.KERNEL32.dll_GetProcessHeap
push 0x1d
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1000451c
lea ecx, [esp + 0x508]
mov edx, 0x1d
mov dword [esp + 0x508], eax
mov dword [esp + 0x50c], 0x1d
mov dword [esp + 0x510], 0
call fcn.10116f60
mov esi, dword [esp + 0x508]
mov ebx, dword [esp + 0x510]
movsd xmm0, qword [0x1039f341]
movsd qword [esi + ebx + 0x15], xmm0
movsd xmm0, qword [0x1039f33c]
movsd qword [esi + ebx + 0x10], xmm0
movsd xmm0, qword [0x1039f334]
movsd qword [esi + ebx + 8], xmm0
movsd xmm0, qword [str.reqwest_internal_sync_runtime]
movsd qword [esi + ebx], xmm0
add ebx, 0x1d
movsd xmm1, qword [esp + 0x2a0]
movsd xmm2, qword [esp + 0x2a8]
mov eax, dword [esp + 0x50c]
movsd xmm0, qword [esp + 0x298]
movsd xmm3, qword [esp + 0x200]
mov ecx, dword [esp + 0xb7]
movsd qword [esp + 0x3f8], xmm1
movsd xmm1, qword [esp + 0x2b0]
movsd qword [esp + 0x400], xmm2
movsd xmm2, qword [esp + 0x2b8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x22f]
movsd qword [esp + 0x3f0], xmm0
movsd qword [esp + 0x60], xmm3
movsd qword [esp + 0x408], xmm1
movsd xmm1, qword [esp + 0x2c0]
movsd qword [esp + 0x410], xmm2
movsd xmm2, qword [esp + 0x2c8]
movsd qword [esp + 0x418], xmm1
movsd xmm1, qword [esp + 0x2d0]
movsd qword [esp + 0x420], xmm2
movsd xmm2, qword [esp + 0x210]
movsd qword [esp + 0x428], xmm1
movsd xmm1, qword [esp + 0x218]
movsd qword [esp + 0xc8], xmm2
movsd xmm2, qword [esp + 0x220]
movsd qword [esp + 0xd0], xmm1
movsd xmm1, qword [esp + 0x208]
movsd qword [esp + 0x70], xmm2
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [esp + 0x228]
movsd qword [esp + 0x78], xmm1
mov dword [esp + 0x7f], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xbf], ecx
call fcn.100fe8c0
mov dword [esp + 4], eax
mov eax, dword [esp + 8]
lea ecx, [esp + 0x508]
mov dword [esp + 0x508], esi
mov dword [esp + 0x50c], eax
mov dword [esp + 0x510], ebx
call fcn.100f2c10
mov dword [esp + 0x20], eax
lock inc dword [eax]
jle 0x10004482
mov esi, eax
call sub.KERNEL32.dll_GetProcessHeap
push 0x14
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1000452d
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], 0
mov dword [esp + 0x14], eax
mov ebx, eax
lock inc dword [eax]
jle 0x10004482
movsd xmm1, qword [esp + 0x3f8]
movsd xmm2, qword [esp + 0x400]
mov eax, dword [esp + 0x7f]
movsd xmm0, qword [esp + 0x3f0]
movsd xmm3, qword [esp + 0x60]
mov ecx, dword [esp + 0xbf]
movsd qword [esp + 0x510], xmm1
movsd xmm1, qword [esp + 0x408]
movsd qword [esp + 0x518], xmm2
movsd xmm2, qword [esp + 0x410]
movsd qword [esp + 0x508], xmm0
movsd qword [esp + 0x100], xmm3
movsd qword [esp + 0x520], xmm1
movsd xmm1, qword [esp + 0x418]
movsd qword [esp + 0x528], xmm2
movsd xmm2, qword [esp + 0x420]
movsd qword [esp + 0x530], xmm1
movsd xmm1, qword [esp + 0x428]
movsd qword [esp + 0x538], xmm2
movsd xmm2, qword [esp + 0xc8]
movsd qword [esp + 0x540], xmm1
movsd xmm1, qword [esp + 0xd0]
movsd qword [esp + 0x28], xmm2
movsd xmm2, qword [esp + 0x70]
movsd qword [esp + 0x30], xmm1
movsd xmm1, qword [esp + 0x68]
movsd qword [esp + 0x3a8], xmm2
movsd qword [esp + 0x108], xmm1
movsd xmm1, qword [esp + 0x78]
movsd qword [esp + 0x3b0], xmm1
mov dword [esp + 0x3b7], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0xec], eax
mov dword [esp + 0xef], ecx
call sub.KERNEL32.dll_GetProcessHeap
push 0x110
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004534
movsd xmm0, qword [esp + 0x540]
movsd qword [eax + 0x38], xmm0
movsd xmm0, qword [esp + 0x538]
movsd qword [eax + 0x30], xmm0
movsd xmm0, qword [esp + 0x530]
movsd qword [eax + 0x28], xmm0
movsd xmm0, qword [esp + 0x528]
movsd qword [eax + 0x20], xmm0
movsd xmm0, qword [esp + 0x520]
movsd qword [eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x518]
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [esp + 0x508]
movsd xmm1, qword [esp + 0x510]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
mov dword [eax + 0x44], 0
mov dword [eax + 0x40], 0
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
movsd qword [eax + 0x50], xmm1
movsd qword [eax + 0x48], xmm0
mov dword [eax + 0x5c], 0
mov dword [eax + 0x58], 1
mov dword [eax + 0x64], 0
mov dword [eax + 0x60], 0x5a
mov dword [eax + 0x68], 0
mov dword [eax + 0x74], 0
mov dword [eax + 0x70], 1
mov dword [eax + 0x7c], 0
mov dword [eax + 0x78], 0x3c
mov dword [eax + 0x80], 0
mov dword [eax + 0x8c], 0
mov dword [eax + 0x88], 0
movsd xmm0, qword [esp + 0x100]
movsd xmm1, qword [esp + 0x108]
movsd qword [eax + 0x90], xmm0
movsd qword [eax + 0x98], xmm1
mov dword [eax + 0xa0], 0xffffffff
mov dword [eax + 0xa4], 4
mov dword [eax + 0xa8], 0
mov dword [eax + 0xac], 0
mov dword [eax + 0xb0], 1
mov dword [eax + 0xb4], 0xa
mov dword [eax + 0xbc], 4
mov dword [eax + 0xc0], 0
mov dword [eax + 0xc4], 0
mov dword [eax + 0xc8], 0
mov dword [eax + 0xd0], 0
mov byte [eax + 0xd8], 2
mov ecx, dword [esp + 0x3b7]
mov dword [eax + 0xe8], ecx
movsd xmm0, qword [esp + 0x3a8]
movsd xmm1, qword [esp + 0x3b0]
movsd qword [eax + 0xe1], xmm1
movsd qword [eax + 0xd9], xmm0
mov dword [eax + 0xec], 0
mov dword [eax + 0xf0], 0x1010001
mov dword [eax + 0xf4], 0x1000200
mov byte [eax + 0xf8], 0
mov ecx, dword [esp + 0xec]
mov edx, dword [esp + 0xef]
mov dword [eax + 0xf9], ecx
mov ecx, dword [esp + 0x4c]
mov dword [eax + 0xfc], edx
mov edx, dword [esp + 4]
mov dword [eax + 0x100], edi
mov dword [eax + 0x104], ecx
lea ecx, [esp + 0x508]
mov dword [eax + 0x108], esi
mov dword [eax + 0x10c], ebx
push 0x1039f34c
push eax
call fcn.100ff1b0
add esp, 8
mov ecx, dword [esp + 0x50c]
cmp dword [esp + 0x508], 1
jne 0x10002897
mov esi, dword [esp + 0x510]
lock dec dword [ebx]
jne 0x10002768
mov edi, ecx
lea ecx, [esp + 0x14]
call fcn.1003a690
mov ecx, edi
mov eax, dword [esp + 0x20]
lock dec dword [eax]
jne 0x1000277e
mov edi, ecx
lea ecx, [esp + 0x20]
call fcn.100f2f00
mov ecx, edi
xor edi, edi
cmp cl, 3
je 0x100027a5
mov ebx, ecx
call sub.KERNEL32.dll_GetProcessHeap
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1000455a
mov edi, eax
mov dword [eax], ebx
mov dword [eax + 4], esi
call sub.KERNEL32.dll_GetProcessHeap
push 0x54
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004545
mov dword [eax], edi
mov dword [eax + 4], 0x10397dd8
mov esi, eax
movsd xmm0, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x78]
movsd qword [eax + 8], xmm0
movsd qword [eax + 0x10], xmm1
movsd xmm0, qword [esp + 0x80]
movsd qword [eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x88]
movsd qword [eax + 0x20], xmm0
movsd xmm0, qword [esp + 0x90]
movsd qword [eax + 0x28], xmm0
movsd xmm0, qword [esp + 0x98]
movsd qword [eax + 0x30], xmm0
mov eax, dword [esp + 0xa0]
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], 2
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
movsd qword [esi + 0x40], xmm0
movsd qword [esi + 0x48], xmm1
mov word [esi + 0x50], 0
mov edi, dword [esp + 0x1c]
test edi, edi
je 0x10002be1
mov eax, dword [edi + 8]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ecx, eax
or ecx, 4
lock cmpxchg dword [edi + 8], ecx
jne 0x10002860
and eax, 0xa
cmp eax, 8
jne 0x10002880
mov eax, dword [edi + 0x18]
push dword [edi + 0x14]
call dword [eax + 8]
add esp, 4
lock dec dword [edi]
jne 0x10002be1
lea ecx, [esp + 0x1c]
call fcn.100d8200
jmp 0x10002be1
mov dword [esp + 0x50], 1
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], ebx
mov eax, dword [0x10411900]
test eax, eax
jne 0x100028be
mov ecx, 0x10411900
call fcn.100f2930
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 2
jb 0x100028d3
cmp dword [eax], 1
jne 0x100028d3
add eax, 4
jmp 0x100028e0
call fcn.100f2a80
test eax, eax
je 0x100044b0
mov ecx, eax
call fcn.100f2b50
mov ebx, eax
call sub.KERNEL32.dll_GetProcessHeap
push 0xc
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1000454c
mov esi, eax
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], ebx
mov dword [esp + 4], eax
mov dword [esp + 0x3a8], edi
add esi, 8
jmp 0x10002944
mov edi, dword [esp + 0x3a8]
call fcn.100fa770
test edi, edi
je 0x1000449c
call fcn.10103fe0
test eax, eax
je 0x10004486
movzx ebx, byte [eax]
mov dl, byte [eax + 1]
test bx, bx
mov ecx, edx
je 0x1000296a
test dl, dl
je 0x10002a60
mov ecx, edx
dec cl
movzx ecx, cl
mov byte [esp + 0x4c], dl
movzx edx, bx
shl ecx, 8
or edx, ecx
mov word [eax], dx
mov eax, dword [edi + 8]
test al, 2
jne 0x10002b0d
test al, 4
jne 0x10002b24
test al, 1
jne 0x100029a0
test al, 1
je 0x10002a00
jmp 0x10002a34
cmp dword [edi + 0x1c], esi
jne 0x100029d0
mov ecx, dword [edi + 0x20]
cmp dword [ecx], 0x100d8180
jne 0x100029d0
cmp dword [ecx + 4], 0x100d81b0
jne 0x100029d0
cmp dword [ecx + 8], 0x100d81a0
jne 0x100029d0
cmp dword [ecx + 0xc], 0x100d81e0
je 0x10002993
nop
mov eax, dword [edi + 8]
nop word cs:[eax + eax]
nop dword [eax]
mov ecx, eax
and ecx, 0xfffffffe
lock cmpxchg dword [edi + 8], ecx
jne 0x100029e0
test al, 2
jne 0x10002b08
mov eax, dword [edi + 0x20]
push dword [edi + 0x1c]
call dword [eax + 0xc]
add esp, 4
mov eax, dword [esp + 4]
lock inc dword [eax]
jle 0x10004482
mov dword [edi + 0x1c], esi
mov dword [edi + 0x20], 0x1039f35c
mov eax, dword [edi + 8]
nop word [eax + eax]
mov ecx, eax
or ecx, 1
lock cmpxchg dword [edi + 8], ecx
jne 0x10002a20
test al, 2
jne 0x10002b0d
test bl, bl
je 0x10002a6a
call fcn.10103fe0
test eax, eax
je 0x100044c9
movzx ecx, byte [esp + 0x4c]
movzx ecx, cx
shl ecx, 8
or ecx, 1
mov word [eax], cx
jmp 0x10002a6a
mov ecx, dword [esi]
add ecx, 0x18
call fcn.100fb9e0
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x10002937
mov eax, dword [0x10411900]
test eax, eax
jne 0x10002a8b
mov ecx, 0x10411900
call fcn.100f2930
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 2
jb 0x10002aa0
cmp dword [eax], 1
jne 0x10002aa0
add eax, 4
jmp 0x10002aad
call fcn.100f2a80
test eax, eax
je 0x100044b0
mov ecx, eax
call fcn.100f2b50
mov dword [esp + 0x3f0], eax
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x50c], eax
lea eax, [esp + 0x508]
mov dword [esp + 0x508], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x100fb010
mov eax, dword [0x10551ec0]
mov eax, dword [esp + 0x3f0]
lock dec dword [eax]
jne 0x10002930
lea ecx, [esp + 0x3f0]
call fcn.100f2f00
jmp 0x10002930
lock or dword [edi + 8], 1
xor eax, eax
cmp dword [edi + 0xc], 0
mov esi, dword [edi + 0x10]
mov dword [edi + 0xc], 0
sete al
test eax, eax
je 0x10002b63
mov bl, 1
test edi, edi
je 0x10002b61
mov eax, dword [edi + 8]
nop dword [eax]
mov ecx, eax
or ecx, 4
lock cmpxchg dword [edi + 8], ecx
jne 0x10002b30
and eax, 0xa
cmp eax, 8
jne 0x10002b50
mov eax, dword [edi + 0x18]
push dword [edi + 0x14]
call dword [eax + 8]
add esp, 4
lock dec dword [edi]
jne 0x10002b61
lea ecx, [esp + 0x3a8]
call fcn.100d8200
jmp 0x10002b81
lock dec dword [edi]
jne 0x10002b74
lea ecx, [esp + 0x3a8]
call fcn.100d8200
mov dword [esp + 0x3a8], 0
xor ebx, ebx
mov eax, dword [esp + 4]
mov dword [esp + 0x508], eax
lock dec dword [eax]
jne 0x10002b9d
lea ecx, [esp + 0x508]
call fcn.100d82d0
test bl, bl
jne 0x10004553
test esi, esi
je 0x10002c7e
cmp dword [esp + 0x50], 0
je 0x10002bbd
push dword [esp + 0x54]
call sub.KERNEL32.dll_CloseHandle
mov eax, dword [esp + 0x58]
lock dec dword [eax]
jne 0x10002bcf
lea ecx, [esp + 0x58]
call fcn.100f2f00
mov eax, dword [esp + 0x5c]
lock dec dword [eax]
jne 0x10002be1
lea ecx, [esp + 0x5c]
call fcn.1003a690
mov eax, dword [esp + 0x44]
lock dec dword [eax + 0x20]
jne 0x10002c4d
mov ecx, dword [esp + 0x44]
mov edx, 1
lock xadd dword [ecx + 0xc], edx
add ecx, 8
call fcn.100d8330
lock or dword [eax + 0xd08], 0x20000
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0x14]
nop word [eax + eax]
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 0x14], edx
jne 0x10002c20
test eax, eax
jne 0x10002c4d
mov edx, dword [ecx + 0x1c]
mov eax, dword [ecx + 0x18]
mov dword [ecx + 0x1c], 0
lock and dword [ecx + 0x14], 0xfffffffd
test edx, edx
je 0x10002c4d
push eax
call dword [edx + 4]
add esp, 4
mov eax, dword [esp + 0x44]
lock dec dword [eax]
jne 0x10002c5f
lea ecx, [esp + 0x44]
call fcn.100d84d0
mov al, 1
test al, al
je 0x10002cef
mov eax, dword [esp + 0xb0]
mov dword [eax + 4], esi
mov dword [eax], 1
jmp 0x100033fa
movsd xmm0, qword [esp + 0x50]
movsd xmm1, qword [esp + 0x58]
mov esi, dword [esp + 0x44]
movsd qword [esp + 0x508], xmm0
movsd qword [esp + 0x510], xmm1
call sub.KERNEL32.dll_GetProcessHeap
push 0x1c
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004572
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], esi
mov ebx, eax
movsd xmm0, qword [esp + 0x508]
movsd xmm1, qword [esp + 0x510]
movsd qword [eax + 0xc], xmm0
movsd qword [eax + 0x14], xmm1
xor eax, eax
test al, al
jne 0x10002c69
mov edx, dword [esp + 0x10]
mov dword [esp + 0x254], 0
mov dword [esp + 0x250], 1
mov dword [esp + 0x25c], 0
mov dword [esp + 0x258], 0x1e
mov dword [esp + 0x260], 0
mov dword [esp + 0x268], ebx
lea ecx, [esp + 0x508]
push dword [ebp + 8]
call fcn.1004c9b0
add esp, 4
cmp dword [esp + 0x508], 1
jne 0x10002d5d
mov edx, dword [esp + 0x50c]
mov ecx, 1
xor eax, eax
jmp 0x10002d81
xorps xmm0, xmm0
lea esi, [esp + 0x50c]
lea edi, [esp + 0x3a8]
mov ecx, 0x12
mov al, 1
movaps xmmword [esp + 0x240], xmm0
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
movsd xmm0, qword [esp + 0x260]
movsd xmm2, qword [esp + 0x250]
movsd xmm1, qword [esp + 0x258]
movsd qword [esp + 0x518], xmm0
movsd qword [esp + 0x510], xmm1
movsd qword [esp + 0x508], xmm2
lock inc dword [ebx]
jle 0x10004482
movsd xmm0, qword [esp + 0x518]
movsd xmm1, qword [esp + 0x508]
movsd xmm2, qword [esp + 0x510]
mov dword [esp + 0x4c], ebx
lea esi, [esp + 0x3a8]
test al, al
movsd qword [esp + 0x290], xmm0
movsd qword [esp + 0x2a8], xmm0
movsd xmm0, qword [esp + 0x220]
movsd qword [esp + 0x280], xmm1
movsd qword [esp + 0x298], xmm1
movsd qword [esp + 0x2a0], xmm2
mov dword [esp + 0x2b0], ebx
mov dword [esp + 0x2b8], ecx
mov dword [esp + 0x2bc], edx
mov dword [esp + 0x2c0], 2
movsd xmm1, qword [esp + 0x228]
mov ecx, dword [esp + 0x238]
lea ebx, [esp + 0x34c]
movsd qword [esp + 0x288], xmm2
mov edi, ebx
movsd qword [esp + 0x2c4], xmm0
movsd xmm0, qword [esp + 0x230]
movsd qword [esp + 0x2cc], xmm1
mov dword [esp + 0x2dc], ecx
movsd xmm1, qword [esp + 0x218]
mov ecx, dword [esp + 0xf8]
movsd qword [esp + 0x2d4], xmm0
movsd xmm0, qword [esp + 0x210]
mov dword [esp + 0x2e4], 0
mov dword [esp + 0x2e0], 0
movsd qword [esp + 0x2f0], xmm1
movsd xmm1, qword [esp + 0x208]
movsd qword [esp + 0x2e8], xmm0
mov dword [esp + 0x2f8], 2
mov dword [esp + 0x2fc], 0
mov dword [esp + 0x300], 4
mov dword [esp + 0x304], 0
mov dword [esp + 0x308], 0
mov dword [esp + 0x30c], 4
mov dword [esp + 0x310], 0
mov dword [esp + 0x314], 0
mov word [esp + 0x318], 0
mov dword [esp + 0x31a], ecx
movzx ecx, word [esp + 0xfc]
movsd xmm0, qword [esp + 0x200]
mov word [esp + 0x31e], cx
mov cl, byte [0x1039ef4f]
mov dword [esp + 0x324], 0
mov dword [esp + 0x320], 0
movsd qword [esp + 0x330], xmm1
movsd qword [esp + 0x328], xmm0
mov byte [esp + 0x338], 1
movsd xmm0, qword [esp + 0x240]
movsd xmm1, qword [esp + 0x248]
mov byte [esp + 0x33b], cl
movzx ecx, word [0x1039ef4d]
mov word [esp + 0x339], cx
movsd qword [esp + 0x344], xmm1
movsd qword [esp + 0x33c], xmm0
mov ecx, 0x12
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x394], 2
movsd xmm0, qword [esp + 0x270]
movsd xmm1, qword [esp + 0x278]
movsd qword [esp + 0x398], xmm0
movsd qword [esp + 0x3a0], xmm1
je 0x10003341
mov eax, dword [esp + 0x358]
mov ecx, dword [esp + 0x34c]
mov edx, dword [esp + 0x354]
test eax, eax
je 0x10003030
cmp edx, eax
je 0x10003030
jbe 0x10004561
cmp byte [ecx + eax], 0xbf
jle 0x10004561
sub edx, eax
cmp edx, 3
jb 0x10003341
add ecx, eax
cmp ecx, 0x103c9710
je 0x1000305d
movzx eax, word [ecx]
movzx ecx, byte [ecx + 2]
xor eax, 0x2f3a
xor ecx, 0x2f
or cx, ax
jne 0x10003341
mov ecx, ebx
call fcn.101169e0
mov esi, edx
lea ecx, [esp + 0x508]
mov edx, eax
add esi, eax
push esi
call fcn.1004b850
add esp, 4
cmp dword [esp + 0x508], 1
mov eax, 2
je 0x100030b0
mov eax, dword [esp + 0x50c]
movsd xmm0, qword [esp + 0x510]
mov ecx, dword [esp + 0x518]
movsd qword [esp + 0x118], xmm0
mov dword [esp + 0x120], ecx
mov ecx, dword [esp + 0x120]
movsd xmm0, qword [esp + 0x118]
cmp eax, 2
mov dword [esp + 0x3f8], ecx
movsd qword [esp + 0x3f0], xmm0
je 0x10003341
mov ecx, dword [esp + 0x3f8]
movsd xmm0, qword [esp + 0x3f0]
lea edi, [esp + 0x508]
mov dword [esp + 0x508], eax
mov edx, edi
mov dword [esp + 0x78], ecx
mov dword [esp + 0x514], ecx
lea ecx, [esp + 0x28]
movsd qword [esp + 0x70], xmm0
movsd qword [esp + 0x50c], xmm0
call fcn.10006fc0
mov ecx, ebx
call fcn.10116a90
test eax, eax
je 0x10003173
mov esi, edx
lea ecx, [esp + 0x508]
mov edx, eax
add esi, eax
push esi
call fcn.1004b850
add esp, 4
cmp dword [esp + 0x508], 1
je 0x10003173
mov eax, dword [esp + 0x50c]
movsd xmm0, qword [esp + 0x510]
mov ecx, dword [esp + 0x518]
cmp eax, 2
movsd qword [esp + 0x3f0], xmm0
mov dword [esp + 0x3f8], ecx
jne 0x100031b1
mov dword [esp + 0x118], 0
cmp dword [esp + 0x30], 0
jne 0x100031f2
cmp dword [esp + 0x118], 0
jne 0x100031f2
cmp dword [esp + 0x2c], 0
je 0x10003341
mov esi, dword [esp + 0x28]
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x10003341
mov dword [esp + 0x508], eax
movsd xmm0, qword [esp + 0x3f0]
mov eax, dword [esp + 0x3f8]
lea ecx, [esp + 0x118]
lea edx, [esp + 0x508]
movsd qword [esp + 0x50c], xmm0
mov dword [esp + 0x514], eax
call fcn.10006fc0
cmp dword [esp + 0x30], 0
je 0x10003185
mov ecx, ebx
call fcn.10116450
test al, al
jne 0x10004583
mov ecx, ebx
call fcn.10116860
test al, al
jne 0x10004594
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
test esi, esi
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xb4], eax
je 0x10003341
mov eax, dword [esp + 0x120]
mov edi, dword [esp + 0x118]
mov ebx, dword [esp + 0x11c]
mov dword [esp + 4], eax
push 0x110
lea eax, [esp + 0x29c]
push eax
lea eax, [esp + 0x3f8]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
test edi, edi
mov dword [esp + 0xbc], esi
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc0], eax
je 0x10003402
mov eax, dword [esp + 4]
lea edx, [esp + 0xbc]
lea ecx, [esp + 0x70]
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], ebx
lea ebx, [esp + 0x118]
mov dword [esp + 0x508], 0x103a17a4
mov dword [esp + 0x50c], 2
mov dword [esp + 0x510], 0
mov dword [esp + 0x118], edx
mov dword [esp + 0x11c], 0x10045a10
mov dword [esp + 0x120], ecx
lea ecx, [esp + 0xec]
lea edx, [esp + 0x508]
mov dword [esp + 0x518], ebx
mov dword [esp + 0x124], 0x10045a10
mov dword [esp + 0x51c], 2
mov dword [esp + 0x78], eax
call fcn.100068b0
cmp dword [esp + 0x74], 0
je 0x1000346f
mov esi, dword [esp + 0x70]
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x1000346f
lea eax, [esp + 0x1208]
push 0x110
lea ecx, [esp + 0x29c]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov esi, dword [esp + 0x122c]
mov edi, dword [esp + 0x1228]
lea eax, [esp + 0x1230]
push 0xe8
push eax
lea ebx, [esp + 0x510]
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp edi, 1
jne 0x100033a0
mov eax, dword [esp + 0xb0]
mov dword [eax + 4], esi
mov dword [eax], 1
jmp 0x100033cd
push 0xe8
push ebx
lea esi, [esp + 0x3f8]
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0xb0]
lea edx, [esp + 0x1208]
push esi
call fcn.100e78d0
add esp, 4
mov eax, dword [esp + 0x1220]
lock dec dword [eax]
jne 0x100033e5
lea ecx, [esp + 0x1220]
call fcn.100eb2f0
mov eax, dword [esp + 0x4c]
lock dec dword [eax]
jne 0x100033fa
lea ecx, [esp + 0x268]
call fcn.10001900
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [esp + 0x118]
lea eax, [esp + 0xbc]
mov dword [esp + 0x508], 0x103a17a4
mov dword [esp + 0x50c], 2
mov dword [esp + 0x510], 0
lea edx, [esp + 0x508]
mov dword [esp + 0x518], ecx
lea ecx, [esp + 0xec]
mov dword [esp + 0x118], eax
mov dword [esp + 0x11c], 0x10045a10
mov dword [esp + 0x51c], 1
call fcn.100068b0
lea ebx, [esp + 0x118]
lea edx, [esp + 0xec]
mov ecx, ebx
lea esi, [esp + 0x28]
call fcn.100545b0
lea edi, [esp + 0x508]
lea ecx, [esp + 0x70]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x508], 0x10398444
mov dword [esp + 0x50c], 1
mov dword [esp + 0x510], 0
mov dword [esp + 0x518], esi
mov dword [esp + 4], ebx
mov dword [esp + 0x2c], 0x10045a10
mov dword [esp + 0x51c], 1
mov edx, edi
call fcn.100068b0
cmp dword [esp + 0x11c], 0
je 0x100034f5
mov esi, dword [esp + 0x118]
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x78]
mov dword [esp + 0xe8], eax
push 0x110
lea eax, [esp + 0x3f4]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp dword [esp + 0x528], 0
jne 0x1000440c
mov eax, dword [0x1039efc0]
movsd xmm0, qword [0x1039efb8]
movsd xmm1, qword [0x1039efb0]
mov edx, dword [esp + 0xe8]
mov dword [esp + 0x24], ebx
mov dword [esp + 0xd8], eax
xor eax, eax
movsd qword [esp + 0xd0], xmm0
movsd qword [esp + 0xc8], xmm1
cmp esi, eax
je 0x100036d1
mov ch, byte [edx + eax]
cmp ch, 0x1f
seta cl
cmp ch, 0x7f
setne bl
inc eax
cmp ch, 9
je 0x10003567
and cl, bl
jne 0x10003567
mov byte [esp + 0x110], 2
call sub.KERNEL32.dll_GetProcessHeap
push 2
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x100045c1
mov edi, eax
mov byte [eax], 5
call sub.KERNEL32.dll_GetProcessHeap
push 0x54
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10004545
mov dword [eax], edi
mov dword [eax + 4], 0x1039f1bc
mov esi, eax
movsd xmm0, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x78]
movsd qword [eax + 8], xmm0
movsd qword [eax + 0x10], xmm1
movsd xmm0, qword [esp + 0x80]
movsd qword [eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x88]
movsd qword [eax + 0x20], xmm0
movsd xmm0, qword [esp + 0x90]
movsd qword [eax + 0x28], xmm0
movsd xmm0, qword [esp + 0x98]
movsd qword [eax + 0x30], xmm0
mov eax, dword [esp + 0xa0]
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], 2
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
movsd qword [esi + 0x40], xmm0
movsd qword [esi + 0x48], xmm1
mov word [esi + 0x50], 0
cmp byte [esp + 0xc8], 0
je 0x100038ca
mov eax, dword [esp + 0xd8]
lea ecx, [esp + 0xd4]
push dword [esp + 0xd0]
push dword [esp + 0xd0]
push ecx
call dword [eax + 4]
add esp, 0xc
cmp dword [esp + 0x528], 0
mov ebx, dword [esp + 0x24]
lea edi, [esp + 0x508]
je 0x100038d5
mov edi, dword [esp + 0x52c]
mov eax, dword [edi]
test eax, eax
je 0x10004202
mov ecx, dword [edi + 4]
push eax
call dword [ecx]
add esp, 4
mov eax, dword [edi + 4]
cmp dword [eax + 4], 0
je 0x10004202
mov ebx, dword [edi]
cmp dword [eax + 8], 9
jae 0x100041ee
call sub.KERNEL32.dll_GetProcessHeap
push ebx
jmp 0x100041f6
lea ecx, [esp + 0x100]
push esi
call fcn.10007c50
add esp, 4
movsd xmm0, qword [esp + 0xc8]
movsd xmm1, qword [esp + 0xd0]
mov byte [esp + 0x110], 0
mov eax, dword [esp + 0xd8]
lea ecx, [esp + 0x550]
movzx esi, word [esp + 0x111]
mov dl, byte [esp + 0x113]
movsd qword [esp + 0x30], xmm1
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [esp + 0x100]
movsd xmm1, qword [esp + 0x108]
mov dword [esp + 0x38], eax
mov word [esp + 0x1c], si
mov byte [esp + 0x1e], dl
movsd qword [esp + 0x50], xmm0
movsd qword [esp + 0x58], xmm1
call fcn.1004e220
mov eax, dword [esp + 0x550]
xor eax, 2
or eax, dword [esp + 0x554]
jne 0x10003877
mov ecx, dword [esp + 0x55c]
mov eax, dword [esp + 0x558]
mov edx, dword [esp + 0x564]
mov esi, dword [esp + 0x560]
mov edi, ecx
mov dword [esp + 0x11c], ecx
mov dword [esp + 0x118], eax
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], esi
xor ecx, 0x6c796765
xor edi, 0x736f6d65
mov dword [esp + 0x12c], edi
mov edi, eax
xor eax, 0x6e657261
xor edi, 0x70736575
mov dword [esp + 0x128], edi
mov edi, edx
mov dword [esp + 0x134], ecx
mov ecx, esi
xor edx, 0x74656462
xor esi, 0x79746573
mov dword [esp + 0x130], eax
xor edi, 0x646f7261
xor ecx, 0x6e646f6d
cmp byte [esp + 0x28], 1
mov dword [esp + 0x13c], edi
mov dword [esp + 0x138], ecx
mov dword [esp + 0x144], edx
mov dword [esp + 0x140], esi
mov dword [esp + 0x14c], 0
mov dword [esp + 0x148], 0
mov dword [esp + 0x154], 0
mov dword [esp + 0x150], 0
jne 0x10003915
lea esi, [esp + 0x118]
lea edx, [esp + 0x70]
mov dword [esp + 0x70], 1
mov ecx, esi
push 4
call fcn.10018260
add esp, 4
mov edx, dword [esp + 0x2c]
mov ecx, esi
push dword [esp + 0x30]
jmp 0x10003945
mov al, byte [esp + 0x28]
cmp al, 1
mov byte [esp + 0xf], al
jne 0x10003b35
mov esi, dword [esp + 0x30]
mov byte [esp + 0xf], 1
test esi, esi
je 0x10003b87
mov edi, dword [esp + 0x2c]
mov ebx, 0xad2aca77
mov eax, 0x47985764
movzx ecx, byte [edi]
mov edx, 0x1b3
imul ebx, ebx, 0x1b3
inc edi
xor ecx, eax
mov eax, ecx
shl ecx, 8
mul edx
add ecx, edx
add ebx, ecx
dec esi
jne 0x100038a6
jmp 0x10003b8b
mov ebx, dword [esp + 0x24]
lea edi, [esp + 0x508]
mov eax, dword [esp + 0x530]
cmp eax, 2
je 0x10004359
test eax, eax
je 0x10003b47
mov eax, dword [esp + 0x540]
lea ecx, [esp + 0x53c]
push dword [esp + 0x538]
push dword [esp + 0x538]
push ecx
call dword [eax + 4]
add esp, 0xc
jmp 0x10004359
lea esi, [esp + 0x118]
lea edx, [esp + 0x70]
mov dword [esp + 0x70], 0
mov ecx, esi
push 4
call fcn.10018260
add esp, 4
movzx eax, byte [esp + 0x29]
lea edx, [esp + 0x70]
mov ecx, esi
mov dword [esp + 0x70], eax
push 4
call fcn.10018260
add esp, 4
mov edx, dword [esp + 0x150]
mov ecx, dword [esp + 0x144]
mov edi, dword [esp + 0x148]
mov esi, dword [esp + 0x140]
mov eax, dword [esp + 0x138]
mov ebx, dword [esp + 0x12c]
shl edx, 0x18
xor esi, edi
mov dword [esp + 0x18], edi
mov edi, eax
or edx, dword [esp + 0x14c]
mov dword [esp + 0xac], edx
xor ecx, edx
mov edx, dword [esp + 0x128]
add edx, eax
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x13c]
adc ebx, edx
shld edi, edx, 0xd
shld edx, eax, 0xd
mov eax, dword [esp + 0x130]
mov dword [esp + 4], ebx
xor edx, ebx
mov ebx, dword [esp + 0x10]
xor edi, ebx
add eax, esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x134]
adc eax, ecx
mov dword [esp + 0x48], eax
mov eax, esi
shrd esi, ecx, 0x10
shld eax, ecx, 0x10
xor esi, dword [esp + 0x48]
xor eax, dword [esp + 8]
add dword [esp + 4], eax
mov ecx, eax
adc ebx, esi
shld ecx, esi, 0x15
shrd eax, esi, 0xb
mov esi, edi
xor eax, ebx
xor ecx, dword [esp + 4]
add dword [esp + 8], edi
adc dword [esp + 0x48], edx
shld esi, edx, 0x11
shrd edi, edx, 0xf
mov edx, ebx
mov ebx, dword [esp + 0x18]
xor esi, dword [esp + 8]
xor edx, dword [esp + 0xac]
xor dword [esp + 4], ebx
mov ebx, dword [esp + 0x48]
xor edi, ebx
xor ebx, 0xff
add dword [esp + 4], esi
adc edx, edi
mov dword [esp + 0x10], edx
mov edx, esi
shrd esi, edi, 0x13
shld edx, edi, 0xd
xor esi, dword [esp + 0x10]
mov edi, ecx
xor edx, dword [esp + 4]
add ebx, ecx
adc dword [esp + 8], eax
shld edi, eax, 0x10
shrd ecx, eax, 0x10
xor edi, ebx
xor ecx, dword [esp + 8]
add dword [esp + 0x10], edi
mov eax, edi
adc dword [esp + 4], ecx
shld eax, ecx, 0x15
shrd edi, ecx, 0xb
mov ecx, edx
xor edi, dword [esp + 4]
xor eax, dword [esp + 0x10]
add ebx, edx
adc dword [esp + 8], esi
shld ecx, esi, 0x11
shrd edx, esi, 0xf
xor ecx, ebx
xor edx, dword [esp + 8]
add dword [esp + 0x10], ecx
mov esi, ecx
adc dword [esp + 4], edx
shld esi, edx, 0xd
shrd ecx, edx, 0x13
mov edx, eax
xor ecx, dword [esp + 4]
xor esi, dword [esp + 0x10]
add dword [esp + 8], eax
adc ebx, edi
shld edx, edi, 0x10
shrd eax, edi, 0x10
xor edx, dword [esp + 8]
xor eax, ebx
add dword [esp + 4], edx
mov edi, edx
adc dword [esp + 0x10], eax
shld edi, eax, 0x15
shrd edx, eax, 0xb
mov eax, esi
xor edx, dword [esp + 0x10]
xor edi, dword [esp + 4]
add dword [esp + 8], esi
adc ebx, ecx
shld eax, ecx, 0x11
shrd esi, ecx, 0xf
xor eax, dword [esp + 8]
xor esi, ebx
add dword [esp + 4], eax
mov ecx, eax
adc dword [esp + 0x10], esi
shld ecx, esi, 0xd
shrd eax, esi, 0x13
mov esi, dword [esp + 8]
xor ecx, dword [esp + 4]
xor eax, dword [esp + 0x10]
add ebx, edi
adc esi, edx
shrd edi, edx, 0x10
xor edi, esi
shr edi, 0xb
add ebx, ecx
mov cl, byte [esp + 0x28]
adc esi, eax
shr eax, 0xf
xor eax, edi
xor eax, esi
xor eax, ebx
mov byte [esp + 0xf], cl
jmp 0x10003b8b
movzx eax, byte [esp + 0x29]
xor eax, 0x13f5
imul eax, eax, 0xffffbc91
jmp 0x10003b8b
mov eax, dword [esp + 0x538]
push dword [esp + 0x534]
call dword [eax]
add esp, 4
mov eax, dword [esp + 0x538]
cmp dword [eax + 4], 0
je 0x10004359
mov edi, dword [esp + 0x534]
cmp dword [eax + 8], 9
jae 0x10004342
call sub.KERNEL32.dll_GetProcessHeap
push edi
jmp 0x1000434a
mov ax, 0x5764
movzx ecx, word [esp + 0x588]
mov ebx, dword [esp + 0x578]
mov edi, dword [esp + 0x570]
and eax, 0x7fff
mov esi, dword [esp + 0x56c]
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
movzx edx, cx
mov ecx, eax
mov al, byte [esp + 0x29]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x18], edi
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
mov dword [esp + 0xac], esi
mov dword [esp + 0x48], edx
and ecx, edx
mov edx, dword [esp + 0x568]
mov byte [esp + 0x3f], al
mov dword [esp + 0xe0], ebx
mov dword [esp + 0xe4], edi
jmp 0x10003c1e
mov eax, dword [esp + 0x18]
movzx ecx, byte [esp + 0x3f]
cmp byte [eax + edx + 1], cl
je 0x10003ce0
inc esi
inc edi
mov edx, ebx
mov dword [esp + 4], esi
mov esi, dword [esp + 0xac]
mov ecx, edi
mov edi, ecx
cmp ecx, esi
mov ecx, 0
jae 0x10003c1e
movzx eax, word [edx + edi*4]
cmp eax, 0xffff
je 0x10003e34
mov esi, dword [esp + 0x48]
mov dword [esp + 8], eax
movzx eax, word [edx + edi*4 + 2]
mov ebx, edx
mov edx, edi
mov ecx, esi
and ecx, eax
sub edx, ecx
and edx, esi
mov esi, dword [esp + 4]
cmp edx, esi
jb 0x10003fc6
cmp ax, word [esp + 0x10]
jne 0x10003c0d
mov ecx, dword [esp + 8]
cmp dword [esp + 0x40], ecx
jbe 0x100045ae
imul edx, ecx, 0x38
mov eax, dword [esp + 0x18]
mov ch, byte [esp + 0xf]
cmp byte [eax + edx], ch
jne 0x10003c0d
cmp byte [esp + 0xf], 1
jne 0x10003bfa
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xe4]
cmp dword [eax + edx + 8], ecx
jne 0x10003c0d
mov eax, dword [esp + 0x18]
mov eax, dword [eax + edx + 4]
cmp eax, dword [esp + 0xe0]
je 0x10003ce0
push dword [esp + 0xe4]
push dword [esp + 0xe4]
push eax
mov dword [esp + 0xb4], edx
call sub.VCRUNTIME140.dll_memcmp
mov edx, dword [esp + 0xb4]
add esp, 0xc
test eax, eax
jne 0x10003c0d
mov al, byte [esp + 0x1e]
movsd xmm0, qword [esp + 0x50]
movsd xmm1, qword [esp + 0x58]
lea ecx, [esp + 0x57c]
mov byte [esp + 0x16], al
movzx eax, word [esp + 0x1c]
movsd qword [esp + 0x70], xmm0
movsd qword [esp + 0x78], xmm1
mov word [esp + 0x14], ax
mov eax, dword [esp + 0x18]
cmp dword [eax + edx + 0x28], 1
lea esi, [eax + edx + 0x28]
mov dword [esp + 4], esi
jne 0x10004247
mov ebx, dword [eax + edx + 0x2c]
mov esi, dword [eax + edx + 0x30]
movzx eax, word [esp + 0x14]
mov edi, dword [esp + 0x584]
movsd xmm0, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x78]
mov dword [esp + 0xa8], edx
mov word [esp + 0x60], ax
mov al, byte [esp + 0x16]
cmp edi, dword [esp + 0x580]
movsd qword [esp + 0x118], xmm0
movsd qword [esp + 0x120], xmm1
mov byte [esp + 0x62], al
mov eax, edi
jne 0x10003d8a
mov edx, 1
call fcn.100d7740
mov eax, dword [esp + 0x584]
mov ecx, dword [esp + 0x57c]
movsd xmm0, qword [esp + 0x118]
movsd xmm1, qword [esp + 0x120]
lea eax, [eax + eax*8]
movsd qword [ecx + eax*4 + 8], xmm1
movsd qword [ecx + eax*4], xmm0
mov byte [ecx + eax*4 + 0x10], 1
movzx edx, word [esp + 0x60]
mov word [ecx + eax*4 + 0x11], dx
mov dl, byte [esp + 0x62]
mov byte [ecx + eax*4 + 0x13], dl
mov edx, dword [esp + 8]
mov dword [ecx + eax*4 + 0x14], 1
mov dword [ecx + eax*4 + 0x18], esi
mov dword [ecx + eax*4 + 0x1c], 0
mov dword [ecx + eax*4 + 0x20], edx
mov edx, dword [esp + 0x584]
inc edx
cmp edx, esi
mov dword [esp + 0x584], edx
jbe 0x100045e8
mov ecx, dword [esp + 0x57c]
lea eax, [esi + esi*8]
mov edx, dword [esp + 4]
mov dword [ecx + eax*4 + 0x1c], 1
mov dword [ecx + eax*4 + 0x20], edi
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xa8]
mov dword [edx], 1
lea eax, [eax + ecx + 0x2c]
mov dword [eax], ebx
mov dword [eax + 4], edi
jmp 0x10004313
mov cl, byte [esp + 0x1e]
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
mov eax, dword [esp + 0x38]
movzx edx, word [esp + 0x1c]
mov byte [esp + 0x22], cl
mov ecx, dword [esp + 0x40]
movsd qword [esp + 0x78], xmm1
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [esp + 0x50]
movsd xmm1, qword [esp + 0x58]
mov dword [esp + 0x80], eax
mov word [esp + 0x20], dx
cmp ecx, 0x7fff
movsd qword [esp + 0x60], xmm0
movsd qword [esp + 0x68], xmm1
ja 0x100045cb
mov eax, dword [esp + 0x80]
movsd xmm0, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x78]
cmp ecx, dword [esp + 0x574]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x128], eax
movzx eax, word [esp + 0x20]
movsd qword [esp + 0x118], xmm0
movsd qword [esp + 0x120], xmm1
movsd xmm0, qword [esp + 0x60]
movsd xmm1, qword [esp + 0x68]
mov word [esp + 0x14], ax
mov al, byte [esp + 0x22]
movsd qword [esp + 0x12c], xmm0
movsd qword [esp + 0x134], xmm1
mov byte [esp + 0x16], al
mov eax, ecx
jne 0x10003f1f
lea ecx, [esp + 0x570]
mov edx, 1
call fcn.1004ea00
mov edx, dword [esp + 0x570]
mov eax, dword [esp + 0x578]
mov ecx, dword [esp + 0x138]
imul eax, eax, 0x38
mov dword [edx + eax + 0x20], ecx
movsd xmm0, qword [esp + 0x130]
movsd qword [edx + eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x128]
movsd qword [edx + eax + 0x10], xmm0
movsd xmm0, qword [esp + 0x118]
movsd xmm1, qword [esp + 0x120]
movsd qword [edx + eax + 8], xmm1
movsd qword [edx + eax], xmm0
mov byte [edx + eax + 0x24], 1
movzx ecx, word [esp + 0x14]
mov word [edx + eax + 0x25], cx
mov cl, byte [esp + 0x16]
mov byte [edx + eax + 0x27], cl
mov ecx, dword [esp + 0x10]
mov dword [edx + eax + 0x28], 0
mov word [edx + eax + 0x34], cx
inc dword [esp + 0x578]
mov edx, dword [esp + 0x56c]
cmp edi, edx
jae 0x100045df
mov eax, dword [esp + 0x568]
mov edx, dword [esp + 0x40]
mov word [eax + edi*4], dx
mov word [eax + edi*4 + 2], cx
lea edi, [esp + 0x508]
jmp 0x1000440c
mov eax, dword [esp + 0x550]
mov cl, byte [esp + 0x1e]
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
cmp esi, 0x1ff
movzx edx, word [esp + 0x1c]
seta bl
xor eax, 2
mov byte [esp + 0x22], cl
mov ecx, dword [esp + 0x40]
movsd qword [esp + 0x78], xmm1
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [esp + 0x50]
movsd xmm1, qword [esp + 0x58]
mov word [esp + 0x20], dx
or eax, dword [esp + 0x554]
mov eax, dword [esp + 0x38]
movsd qword [esp + 0x60], xmm0
movsd qword [esp + 0x68], xmm1
setne bh
cmp ecx, 0x7fff
mov dword [esp + 0x80], eax
ja 0x100045cb
mov eax, dword [esp + 0x80]
movsd xmm0, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x78]
cmp ecx, dword [esp + 0x574]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x128], eax
movzx eax, word [esp + 0x20]
movsd qword [esp + 0x118], xmm0
movsd qword [esp + 0x120], xmm1
movsd xmm0, qword [esp + 0x60]
movsd xmm1, qword [esp + 0x68]
mov word [esp + 0x14], ax
mov al, byte [esp + 0x22]
movsd qword [esp + 0x12c], xmm0
movsd qword [esp + 0x134], xmm1
mov byte [esp + 0x16], al
mov eax, ecx
jne 0x100040ca
lea ecx, [esp + 0x570]
mov edx, 1
call fcn.1004ea00
mov edx, dword [esp + 0x570]
mov eax, dword [esp + 0x578]
mov ecx, dword [esp + 0x138]
imul eax, eax, 0x38
and bl, bh
mov dword [esp + 4], 0
mov byte [esp + 8], bl
mov ebx, dword [esp + 0x40]
mov dword [edx + eax + 0x20], ecx
movsd xmm0, qword [esp + 0x130]
movsd qword [edx + eax + 0x18], xmm0
movsd xmm0, qword [esp + 0x128]
movsd qword [edx + eax + 0x10], xmm0
movsd xmm0, qword [esp + 0x118]
movsd xmm1, qword [esp + 0x120]
movsd qword [edx + eax + 8], xmm1
movsd qword [edx + eax], xmm0
mov byte [edx + eax + 0x24], 1
movzx ecx, word [esp + 0x14]
mov word [edx + eax + 0x25], cx
mov cl, byte [esp + 0x16]
mov byte [edx + eax + 0x27], cl
mov ecx, dword [esp + 0x10]
mov dword [edx + eax + 0x28], 0
mov word [edx + eax + 0x34], cx
inc dword [esp + 0x578]
mov eax, dword [esp + 0x568]
mov edx, dword [esp + 0x56c]
mov esi, edi
cmp edi, edx
mov edi, 0
jae 0x10004162
movzx edi, word [eax + esi*4]
cmp di, 0xffff
je 0x10004192
inc dword [esp + 4]
shl ecx, 0x10
movzx ebx, bx
or ebx, ecx
movzx ecx, word [eax + esi*4 + 2]
mov dword [eax + esi*4], ebx
inc esi
mov ebx, edi
mov edi, esi
jmp 0x10004162
mov dl, byte [esp + 8]
cmp dword [esp + 4], 0x80
mov word [eax + esi*4], bx
mov ebx, dword [esp + 0x24]
mov word [eax + esi*4 + 2], cx
lea edi, [esp + 0x508]
setb al
not dl
test dl, al
jne 0x1000440c
mov eax, dword [esp + 0x554]
or eax, dword [esp + 0x550]
jne 0x1000440c
mov dword [esp + 0x554], 0
mov dword [esp + 0x550], 1
jmp 0x1000440c
call sub.KERNEL32.dll_GetProcessHeap
push dword [ebx - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov ebx, dword [esp + 0x24]
cmp dword [edi + 0x3c], 2
je 0x1000421f
cmp dword [edi + 0xc], 0
je 0x1000421f
mov edi, dword [edi + 8]
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esp + 0x52c]
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
lea ecx, [esp + 0x118]
lea edi, [esp + 0x508]
jmp 0x100043e4
movzx eax, word [esp + 0x14]
mov esi, dword [esp + 0x584]
movsd xmm0, qword [esp + 0x70]
movsd xmm1, qword [esp + 0x78]
mov edi, edx
mov word [esp + 0x60], ax
mov al, byte [esp + 0x16]
cmp esi, dword [esp + 0x580]
movsd qword [esp + 0x118], xmm0
movsd qword [esp + 0x120], xmm1
mov byte [esp + 0x62], al
mov eax, esi
jne 0x1000429c
mov edx, 1
call fcn.100d7740
mov eax, dword [esp + 0x584]
movsd xmm0, qword [esp + 0x118]
movsd xmm1, qword [esp + 0x120]
mov ecx, dword [esp + 0x57c]
lea eax, [eax + eax*8]
movsd qword [ecx + eax*4 + 8], xmm1
movsd qword [ecx + eax*4], xmm0
mov byte [ecx + eax*4 + 0x10], 1
movzx edx, word [esp + 0x60]
mov word [ecx + eax*4 + 0x11], dx
mov dl, byte [esp + 0x62]
mov byte [ecx + eax*4 + 0x13], dl
mov edx, dword [esp + 8]
mov dword [ecx + eax*4 + 0x14], 0
mov dword [ecx + eax*4 + 0x18], edx
mov dword [ecx + eax*4 + 0x1c], 0
mov dword [ecx + eax*4 + 0x20], edx
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x18]
inc dword [esp + 0x584]
mov dword [edx], 1
mov dword [ecx + edi + 0x2c], esi
mov dword [ecx + edi + 0x30], esi
mov ebx, dword [esp + 0x24]
cmp byte [esp + 0x28], 0
lea edi, [esp + 0x508]
je 0x1000440c
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x34]
push dword [esp + 0x30]
push dword [esp + 0x30]
push ecx
call dword [eax + 4]
jmp 0x10004409
call sub.KERNEL32.dll_GetProcessHeap
push dword [edi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
lea edi, [esp + 0x508]
cmp byte [esp + 0x5a8], 0xa
jb 0x10004389
cmp dword [esp + 0x5b0], 0
je 0x10004389
mov edi, dword [esp + 0x5ac]
call sub.KERNEL32.dll_GetProcessHeap
push edi
lea edi, [esp + 0x50c]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x5c0], 0
lea eax, [esp + 0x550]
je 0x100043c1
mov ebx, dword [esp + 0x5bc]
call sub.KERNEL32.dll_GetProcessHeap
push ebx
mov ebx, dword [esp + 0x28]
lea edi, [esp + 0x50c]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
lea eax, [esp + 0x550]
push eax
call fcn.1004fdd0
add esp, 4
cmp dword [esp + 0x604], 2
je 0x100043e0
lea ecx, [esp + 0x604]
call fcn.100547a0
mov ecx, dword [esp + 4]
mov dword [esp + 0x528], 1
mov dword [esp + 0x52c], esi
lea eax, [esp + 0x530]
push 0xe8
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esp + 0x1208]
push 0x110
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov esi, dword [esp + 0xe8]
test ebx, ebx
je 0x1000443b
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0xf0], 0
je 0x1000445a
mov esi, dword [esp + 0xec]
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0xc0], 0
je 0x1000335e
mov esi, dword [esp + 0xbc]
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x1000335e
ud2
mov ecx, 0x103c9a77
mov edx, 0x46
push 0x103c9ac0
push 0x10398218
jmp 0x100044dd
mov ecx, 0x103a3709
mov edx, 0x15
push 0x103a3720
jmp 0x10001e48
mov ecx, 0x103a02cf
mov edx, 0x5e
push 0x103a0330
call fcn.1000a9c0
add esp, 4
ud2
mov ecx, 0x103c9a77
mov edx, 0x46
push 0x103c9ac0
push 0x103a1ea0
lea eax, [esp + 0x510]
push eax
call fcn.1000aa20
add esp, 0xc
ud2
mov ecx, 8
mov edx, 2
call fcn.100067d0
ud2
mov ecx, 0x70
jmp 0x10004577
mov ecx, 0xd10
jmp 0x10004539
mov ecx, 0x34
jmp 0x10004577
mov ecx, 0x24
jmp 0x10004577
mov ecx, 0x1d
mov edx, 1
call fcn.100067d0
ud2
mov ecx, 0x14
jmp 0x10004577
mov ecx, 0x110
mov edx, 8
call fcn.100067d0
ud2
mov ecx, 0x54
jmp 0x10004577
mov ecx, 0xc
jmp 0x10004577
call fcn.100d8310
ud2
mov ecx, 8
jmp 0x10004577
push 0x103c92c4
push edx
push eax
call fcn.10009090
add esp, 0xc
ud2
mov ecx, 0x1c
mov edx, 4
call fcn.100067d0
ud2
mov ecx, 0x1039f283
mov edx, 0x2f
push 0x1039f2b4
jmp 0x100045a3
mov ecx, str.has_authority_means_set_password_shouldnt_fail
mov edx, 0x2f
push 0x1039f2f4
push 0x1039cd58
push edi
jmp 0x100044e5
mov edx, dword [esp + 0x40]
push 0x1039f1e4
call fcn.10008590
add esp, 4
ud2
mov ecx, 2
jmp 0x10004521
mov ecx, str.header_map_at_capacity
mov edx, 0x16
push 0x10397f14
jmp 0x10001e48
mov ecx, edi
push 0x1039f204
jmp 0x100045b7
mov ecx, esi
push 0x1039f1f4
jmp 0x100045b7