Function at 0x10004852
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x110
mov esi, edx
mov dword [esp + 0x30], ecx
lea eax, [0x10051ce6]
lea ecx, [esp + 0x50]
mov dword [ecx], eax
mov eax, dword [ecx]
mov dword [ecx], 0x7e0bc9e1
lea edi, [esp + 0x50]
push dword [edi]
push eax
call fcn.100074de
add esp, 8
xorps xmm0, xmm0
movups xmmword [edi + 0xc], xmm0
movaps xmmword [edi], xmm0
mov ecx, 0xfffffffc
mov edx, dword [ecx + 0x10054724]
xor edx, dword [eax + ecx + 4]
mov dword [esp + ecx + 0x54], edx
add ecx, 4
cmp ecx, 0x18
jb 0x10003cd4
mov al, byte [eax + 0x1c]
xor al, 0x99
mov byte [esp + 0x6c], al
movaps xmm0, xmmword [esp + 0x50]
movaps xmmword [esp + 0xd0], xmm0
movups xmm0, xmmword [esp + 0x5d]
movups xmmword [esp + 0xdd], xmm0
cmp byte [esp + 0xdb], 0xc0
jl 0x1000481b
cmp byte [esp + 0xe0], 0xbf
jle 0x1000481b
lea eax, [esp + 0xdb]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], 5
cmp byte [eax + 0xb], 0xbf
jle 0x10004833
lea eax, [esp + 0xe0]
mov ecx, dword [esp + 0x30]
lea edx, [ecx + 0xc]
lea ecx, [esp + 0x38]
mov dword [ecx], eax
lea eax, [esp + 0x5c]
mov dword [eax - 0xc], 0x1006b000
mov ecx, fcn.100163d0
mov dword [eax - 8], ecx
lea ebx, [esp + 0xb0]
mov dword [eax - 4], ebx
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 8], 0x10001fc0
lea edx, [esp + 0x38]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
lea ecx, [esp + 0x90]
mov dword [ecx], 0x10054740
mov eax, 4
mov dword [ecx + 4], eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], edi
mov dword [ecx + 0xc], eax
lea eax, [esp + 0x38]
mov dword [eax + 4], 6
lea eax, [esp + 8]
push ecx
push eax
call fcn.1003b790
add esp, 8
mov ebx, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x28]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x2c], eax
lea eax, [esi + 0x3c]
mov dword [esp + 0xac], eax
mov eax, dword [esi + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x44]
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x70]
mov dword [esp + 0xc4], eax
mov eax, dword [esi + 0x74]
mov dword [esp + 0xc0], eax
lea edx, [esp + 8]
mov eax, dword [edx + 4]
mov dword [esp + 0xcc], eax
mov eax, dword [edx + 8]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ecx
sub esp, 0x1c
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0xe4]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 0xc], 0
call fcn.100032d6
add esp, 0x1c
cmp dword [esp + 0x50], 0x80000000
jne 0x10003eb3
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
cmp dword [esp + 0x50], 0x80000000
jne 0x10003f4a
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
push esi
call dword [ebx]
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x10003f5c
push dword [ebx + 8]
push eax
push esi
call fcn.1000f0d0
add esp, 0xc
jmp 0x10003f5c
mov eax, dword [esp + 0x58]
mov dword [esp + 0xb8], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0xb0], xmm0
push eax
push dword [esp + 0xb8]
lea esi, [esp + 0x98]
push esi
call fcn.1001168b
add esp, 0xc
push esi
push edi
call fcn.100094bc
add esp, 8
cmp dword [esp + 0x50], 0x80000000
jne 0x10003f69
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
cmp dword [esp + 0x50], 0x80000000
jne 0x10003fe3
mov esi, dword [esp + 0x54]
mov eax, dword [esi]
cmp eax, 1
je 0x100042c0
test eax, eax
jne 0x100042c8
mov eax, dword [esi + 8]
test eax, eax
je 0x100042c8
push 1
push eax
push dword [esi + 4]
call fcn.1000f0d0
add esp, 0xc
jmp 0x100042c8
push edi
call fcn.10001590
add esp, 4
push edi
call fcn.10010490
add esp, 4
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
jmp 0x10003e2e
movsd xmm0, qword [esp + 0x60]
movsd qword [esp + 0x100], xmm0
movups xmm0, xmmword [esp + 0x50]
movaps xmmword [esp + 0xf0], xmm0
lea eax, [esp + 0xf0]
push eax
push dword [esp + 0x34]
push edi
call fcn.1000dd6d
add esp, 0xc
cmp dword [esp + 0x50], 0x80000000
jne 0x10003ffe
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
cmp dword [esp + 0x50], 0x80000000
jne 0x1000412a
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
push esi
call dword [ebx]
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x1000417c
push dword [ebx + 8]
push eax
push esi
jmp 0x10004174
push edi
call fcn.10001590
add esp, 4
push edi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x5c]
jmp 0x100044c8
mov eax, dword [esp + 0x58]
mov dword [esp + 0x40], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x38], xmm0
lea eax, [esp + 0x5c]
movsd xmm0, qword [eax + 0x10]
movsd qword [esp + 0xa0], xmm0
movups xmm0, xmmword [eax]
movaps xmmword [esp + 0x90], xmm0
mov esi, dword [esp + 0x94]
mov ebx, dword [esp + 0x98]
lea eax, [0x1004fba4]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0xafb87677
push dword [esp + 0x50]
push eax
call fcn.100075dc
add esp, 8
movzx ecx, byte [eax + 2]
movzx eax, word [eax]
xor eax, 0x63b1
xor cl, 2
mov word [esp + 0x20], ax
mov byte [esp + 0x22], cl
cmp ebx, 4
jb 0x10004185
push 3
lea eax, [esp + 0x24]
push eax
push ebx
push esi
push edi
call fcn.10042750
add esp, 0x14
lea ebx, [esp + 8]
mov ecx, ebx
mov edx, edi
call fcn.100022e8
cmp dword [esp + 8], 0
je 0x100041a2
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
lea ecx, [esp + 0x9c]
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
movsd xmm0, qword [ecx]
movsd qword [esp + 8], xmm0
mov ecx, edi
mov edx, ebx
call 0x10004852
push dword [esp + 0x1c]
mov eax, edi
push dword [esp + 0x1c]
push dword [esp + 0x34]
mov edi, dword [esp + 0x40]
push edi
push eax
push ebx
call fcn.1000df1e
add esp, 0x18
mov esi, dword [esp + 8]
test esi, esi
je 0x1000441d
mov ebx, dword [esp + 0xc]
push esi
call dword [ebx]
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x10004121
push dword [ebx + 8]
push eax
push esi
call fcn.1000f0d0
add esp, 0xc
mov ebx, dword [esp + 0x18]
jmp 0x10004465
push edi
call fcn.10001590
add esp, 4
push edi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x5c]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea eax, [esp + 0x68]
push eax
call fcn.1000228f
add esp, 4
mov eax, dword [esp + 0x68]
test eax, eax
je 0x1000417c
shl eax, 2
lea eax, [eax + eax*2]
push 4
push eax
push dword [esp + 0x74]
call fcn.1000f0d0
add esp, 0xc
mov ebx, dword [esp + 0x18]
jmp 0x100044da
push ebx
push esi
push 3
lea eax, [esp + 0x2c]
push eax
call fcn.100163e8
add esp, 0x10
test al, al
lea ebx, [esp + 8]
jne 0x100040ab
mov eax, dword [esp + 0x94]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x98]
lea eax, [0x1004fa77]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0x71479193
push dword [esp + 0x50]
push eax
call fcn.100074b7
add esp, 8
xor ecx, ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], ecx
mov dl, 1
mov esi, dword [ecx + 0x10054790]
xor esi, dword [eax + ecx]
mov dword [esp + ecx + 0x50], esi
mov ecx, 4
test dl, 1
mov edx, 0
jne 0x100041e3
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x20], xmm0
cmp ebx, 9
mov esi, dword [esp + 0x34]
jb 0x100042da
push 8
lea eax, [esp + 0x24]
push eax
push ebx
push dword [esp + 0x34]
push edi
call fcn.10042750
add esp, 0x14
lea ebx, [esp + 8]
mov ecx, ebx
mov edx, edi
call fcn.100022e8
cmp dword [esp + 8], 0
je 0x100042fa
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
lea ecx, [esp + 0x9c]
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
movsd xmm0, qword [ecx]
movsd qword [esp + 8], xmm0
mov ecx, edi
mov edx, ebx
call 0x10004852
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push dword [esp + 0x34]
push esi
push edi
push ebx
call fcn.1000df1e
add esp, 0x18
mov edx, esi
mov esi, dword [esp + 8]
test esi, esi
je 0x100045fd
mov ebx, dword [esp + 0xc]
push esi
call dword [ebx]
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x100042b7
push dword [ebx + 8]
push eax
push esi
call fcn.1000f0d0
add esp, 0xc
mov ebx, dword [esp + 0x18]
jmp 0x10004469
lea ecx, [esi + 4]
call fcn.100014e0
push 4
push 0x14
push esi
call fcn.1000f0d0
add esp, 0xc
jmp 0x100044da
push ebx
push dword [esp + 0x2c]
push 8
lea eax, [esp + 0x2c]
push eax
call fcn.100163e8
add esp, 0x10
test al, al
lea ebx, [esp + 8]
jne 0x10004245
mov eax, dword [esp + 0x94]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x98]
lea eax, [0x1004aafb]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0xe3b03697
push dword [esp + 0x50]
push eax
call fcn.100071c6
add esp, 8
xor ecx, ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], ecx
mov dl, 1
mov esi, dword [ecx + 0x10054798]
xor esi, dword [eax + ecx]
mov dword [esp + ecx + 0x50], esi
mov ecx, 4
test dl, 1
mov edx, 0
jne 0x1000433b
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x20], xmm0
cmp ebx, 9
jb 0x100044fc
push 8
lea eax, [esp + 0x24]
push eax
push ebx
push dword [esp + 0x34]
push edi
call fcn.10042750
add esp, 0x14
lea esi, [esp + 8]
mov ecx, esi
mov edx, edi
call fcn.100022e8
cmp dword [esp + 8], 0
je 0x1000451c
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
lea ecx, [esp + 0x9c]
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
movsd xmm0, qword [ecx]
movsd qword [esp + 8], xmm0
mov ecx, edi
mov edx, esi
call 0x10004852
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x34]
push dword [esp + 0x40]
push edi
push esi
call fcn.1000df1e
add esp, 0x18
mov eax, dword [esp + 8]
test eax, eax
mov dword [esp + 0x28], eax
je 0x100046fb
mov esi, dword [esp + 0xc]
push eax
call dword [esi]
add esp, 4
mov eax, dword [esi + 4]
test eax, eax
je 0x10004758
push dword [esi + 8]
push eax
push dword [esp + 0x30]
call fcn.1000f0d0
add esp, 0xc
jmp 0x10004758
lea ecx, [esp + 0x5c]
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
movsd xmm0, qword [ecx]
movsd qword [esp + 8], xmm0
push dword [esp + 0x2c]
push edi
push ebx
call fcn.1000e91e
add esp, 0xc
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x50]
push dword [esp + 0x58]
push dword [esp + 0x50]
push dword [esp + 0x50]
push dword [esp + 0x48]
call fcn.1000d857
add esp, 0x1c
lea edi, [esp + 0x50]
push edi
call fcn.10001590
add esp, 4
push edi
call fcn.10010490
add esp, 4
test esi, esi
je 0x10004495
lea esi, [esp + 0x5c]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x68]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x90]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x38]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0xb0]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
mov ecx, dword [esp + 0x1c]
jmp 0x10003e2e
push ebx
push dword [esp + 0x2c]
push 8
lea eax, [esp + 0x2c]
push eax
call fcn.100163e8
add esp, 0x10
test al, al
lea esi, [esp + 8]
jne 0x10004399
mov esi, dword [esp + 0x94]
mov ebx, dword [esp + 0x98]
lea eax, [0x10046652]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0x6b4ab418
push dword [esp + 0x50]
push eax
call fcn.100071ae
add esp, 8
movzx ecx, byte [eax + 2]
movzx eax, word [eax]
xor eax, 0x7a25
xor cl, 0x35
mov word [esp + 0x20], ax
mov byte [esp + 0x22], cl
cmp ebx, 4
jb 0x10004651
push 3
lea eax, [esp + 0x24]
push eax
push ebx
push esi
push edi
call fcn.10042750
add esp, 0x14
lea esi, [esp + 8]
mov ecx, esi
mov edx, edi
call fcn.100022e8
cmp dword [esp + 8], 0
je 0x1000466e
xor eax, eax
push eax
push eax
push 0x14
call fcn.1001c530
add esp, 0xc
movsd xmm0, qword [esp + 0xa0]
movsd qword [esp + 0x60], xmm0
movaps xmm0, xmmword [esp + 0x90]
movaps xmmword [esp + 0x50], xmm0
push dword [esp + 0xac]
push edi
push esi
call fcn.1000ecbf
add esp, 0xc
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x18]
push dword [esp + 0x18]
push dword [esp + 0x50]
push dword [esp + 0x50]
push dword [esp + 0x48]
call fcn.1000d857
add esp, 0x1c
jmp 0x100044b2
lea ecx, [esp + 0x5c]
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
movsd xmm0, qword [ecx]
movsd qword [esp + 8], xmm0
push dword [esp + 0xac]
push dword [esp + 0x30]
push edx
push ebx
call fcn.1000e629
add esp, 0x10
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x50]
push dword [esp + 0x58]
push dword [esp + 0x50]
push dword [esp + 0x50]
push dword [esp + 0x48]
call fcn.1000d857
add esp, 0x1c
jmp 0x10004469
push ebx
push esi
push 3
lea eax, [esp + 0x2c]
push eax
call fcn.100163e8
add esp, 0x10
test al, al
lea esi, [esp + 8]
jne 0x10004598
mov esi, dword [esp + 0x94]
mov ebx, dword [esp + 0x98]
lea eax, [0x100534eb]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0xa9df815f
push dword [esp + 0x50]
push eax
call fcn.100073b9
add esp, 8
mov edx, dword [eax]
mov ecx, 0x363c30f3
xor edx, ecx
movzx ecx, byte [eax + 6]
movzx eax, word [eax + 4]
xor eax, 0x14a2
xor cl, 0x63
mov dword [esp + 0x20], edx
mov word [esp + 0x24], ax
mov byte [esp + 0x26], cl
cmp ebx, 8
jb 0x1000477a
push 7
lea eax, [esp + 0x24]
push eax
push ebx
push esi
push edi
call fcn.10042750
add esp, 0x14
lea ecx, [esp + 8]
mov edx, edi
call fcn.100022e8
cmp dword [esp + 8], 0
je 0x10004793
jmp 0x10004845
lea ecx, [esp + 0x5c]
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
movsd xmm0, qword [ecx]
movsd qword [esp + 8], xmm0
push dword [esp + 0xc0]
push dword [esp + 0xc8]
push dword [esp + 0x78]
push dword [esp + 0x78]
push dword [esp + 0x3c]
push dword [esp + 0x48]
push esi
call fcn.1000e289
add esp, 0x1c
push dword [esp + 0x1c]
push ebx
push dword [esp + 0x50]
push dword [esp + 0x58]
push dword [esp + 0x50]
push dword [esp + 0x50]
push dword [esp + 0x48]
call fcn.1000d857
add esp, 0x1c
push edi
call fcn.10001590
add esp, 4
push edi
call fcn.10010490
add esp, 4
cmp dword [esp + 0x28], 0
jne 0x1000447f
jmp 0x10004495
push ebx
push esi
push 7
lea eax, [esp + 0x2c]
push eax
call fcn.100163e8
add esp, 0x10
test al, al
jne 0x10004845
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x50]
push dword [esp + 0x58]
push dword [esp + 0x50]
push dword [esp + 0x50]
push dword [esp + 0x48]
call fcn.1000d857
add esp, 0x1c
xor eax, eax
push eax
push eax
push 0x3c
call fcn.1001c530
add esp, 0xc
lea esi, [esp + 0x90]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea eax, [esp + 0x9c]
push eax
call fcn.1000228f
add esp, 4
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x100044c4
shl eax, 2
lea eax, [eax + eax*2]
push 4
push eax
push dword [esp + 0xa8]
call fcn.1000f0d0
add esp, 0xc
jmp 0x100044c4
lea eax, [esp + 0xd0]
push 0x10054770
push 0x10
push 0xb
push 0x1d
push eax
call fcn.10053c30
lea eax, [esp + 0xd0]
push 0x10054780
push 0x16
push 0x10
jmp 0x1000482b
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
call 0x10005272
push ebp
push ebx
push edi
push esi
sub esp, 0xbc
mov edi, edx
mov dword [esp + 0x58], ecx
xor esi, esi
push esi
push esi
call fcn.100101fa
add esp, 8
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], esi
push esi
push esi
call fcn.100101fa
add esp, 8
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], esi
lea eax, [0x10051de8]
lea ecx, [esp + 0xc]
mov dword [ecx], eax
mov eax, dword [ecx]
mov dword [ecx], 0xd83a47c0
lea ebp, [esp + 0xc]
push dword [ebp]
push eax
call fcn.1000746f
add esp, 8
mov ebx, 0xf7fd226c
xor ebx, dword [eax]
mov eax, 4
push esi
push eax
mov esi, 4
call fcn.100101fa
add esp, 8
mov dword [edx], ebx
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], esi
mov eax, dword [edi]
mov esi, dword [edi + 4]
mov ecx, dword [edi + 8]
lea edx, [ecx + ecx*2]
lea edi, [esi + edx*4]
mov dword [ebp], esi
mov dword [ebp + 4], esi
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edi
test ecx, ecx
je 0x10004952
add esi, 0xc
lea ebp, [esp + 0x34]
mov eax, dword [esi - 0xc]
cmp eax, 0x80000000
je 0x1000494e
lea ebx, [esi - 0xc]
mov ecx, dword [esi - 8]
mov edx, dword [esi - 4]
mov dword [esp + 0x34], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], ecx
push edx
push ecx
lea eax, [esp + 0x30]
push eax
call fcn.10010137
add esp, 0xc
push ebp
call fcn.10001590
add esp, 4
push ebp
call fcn.10010490
add esp, 4
add esi, 0xc
add ebx, 0xc
cmp ebx, edi
jne 0x10004902
mov esi, edi
mov dword [esp + 0x10], esi
lea eax, [esp + 0xc]
push eax
call fcn.1000bd42
add esp, 4
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
cmp edi, 7
ja 0x10004986
test edi, edi
je 0x10004c6c
xor eax, eax
cmp byte [ebx + eax], 0x2c
je 0x100049a3
inc eax
cmp edi, eax
jne 0x10004976
jmp 0x10004b6b
push edi
push ebx
push 0x2c
call fcn.10041e00
add esp, 0xc
cmp eax, 1
jne 0x10004b6b
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
lea ecx, [esp + 0x24]
mov dword [ecx - 0x14], ebx
mov dword [ecx - 0x10], edi
mov dword [ecx - 0xc], 0
mov dword [ecx - 8], edi
mov eax, 0x2c
mov dword [ecx - 0x18], eax
mov dword [ecx - 4], 1
mov dword [ecx], eax
xor eax, eax
mov dword [esp], edi
lea ecx, [ebx + eax]
sub edi, eax
mov eax, dword [esp + 0x20]
movzx eax, byte [esp + eax + 0x23]
push edi
push ecx
push eax
call fcn.10041ec0
add esp, 0xc
cmp eax, 1
jne 0x10004b6b
mov edi, edx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
add edi, eax
lea esi, [ecx - 1]
mov ebp, edi
sub ebp, esi
jb 0x10004a3d
mov edx, ebp
add edx, ecx
jb 0x10004a3d
mov dword [esp + 4], ebp
mov ebp, dword [esp]
cmp edx, ebp
ja 0x10004a40
cmp ecx, 5
jae 0x10005265
mov ebp, dword [esp + 4]
lea eax, [ebx + ebp]
push ecx
lea edx, [esp + 0x28]
push edx
push ecx
push eax
call fcn.100163e8
add esp, 0x10
test al, al
jne 0x10004a59
mov eax, dword [esp + 0x18]
mov ebp, dword [esp]
mov dword [esp + 0x1c], edi
cmp edi, ebp
ja 0x10004b6b
cmp eax, edi
jbe 0x100049cd
jmp 0x10004b6b
mov edx, dword [esp + 0x2c]
cmp edi, esi
jne 0x10004a7f
mov esi, edx
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x10]
push eax
call fcn.1003c440
add esp, 8
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
jmp 0x10004ad4
mov eax, dword [esp + 0x30]
cmp eax, ebp
lea ecx, [esp + 0xc]
jbe 0x10004aa2
mov esi, edx
cmp byte [edx + ebp], 0xbf
jg 0x10004aa6
push 0x100547a4
push ebp
push 0
push eax
push esi
call fcn.10053c30
mov esi, edx
jne 0x10004a93
lea eax, [esp + 0x28]
push eax
push ecx
call fcn.1003c440
add esp, 8
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, eax
sub ebx, ebp
jbe 0x10004ad2
cmp byte [ecx + ebp], 0xbf
jg 0x10004ad4
push 0x100547b4
jmp 0x1000524c
jne 0x10004ac8
add ecx, ebp
mov dword [esp], ecx
xor eax, eax
push eax
push ebp
call fcn.100101fa
add esp, 8
mov dword [esp + 8], eax
mov edi, edx
push ebp
push esi
push edx
call fcn.10045a70
add esp, 0xc
lea esi, [esp + 0x28]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
mov eax, dword [esp + 8]
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [esi + 8], ebp
xor eax, eax
push eax
push ebx
call fcn.100101fa
add esp, 8
mov esi, eax
mov edi, edx
push ebx
push dword [esp + 4]
push edx
call fcn.10045a70
add esp, 0xc
lea ebp, [esp + 0x5c]
push ebp
call fcn.10001590
add esp, 4
push ebp
call fcn.10010490
add esp, 4
mov dword [ebp], esi
mov dword [ebp + 4], edi
mov dword [ebp + 8], ebx
lea esi, [esp + 0xc]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
cmp edi, 7
ja 0x10004b92
test edi, edi
je 0x10004c6c
xor eax, eax
cmp byte [esi + eax], 0x2f
je 0x10004baf
inc eax
cmp edi, eax
jne 0x10004b82
jmp 0x10004c6c
push edi
push esi
push 0x2f
call fcn.10041e00
add esp, 0xc
cmp eax, 1
jne 0x10004c6c
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
lea ecx, [esp + 0x24]
mov dword [ecx - 0x14], esi
mov dword [ecx - 0x10], edi
mov dword [ecx - 0xc], 0
mov dword [ecx - 8], edi
mov eax, 0x2e
mov dword [ecx - 0x18], eax
mov dword [ecx - 4], 1
mov dword [ecx], eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
lea ecx, [esi + eax]
sub edi, eax
mov eax, dword [esp + 0x20]
movzx eax, byte [esp + eax + 0x23]
push edi
push ecx
push eax
call fcn.10041ec0
add esp, 0xc
cmp eax, 1
jne 0x10004c5b
mov edi, edx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
add edi, eax
lea esi, [ecx - 1]
mov ebp, edi
sub ebp, esi
jb 0x10004c48
mov edx, ebp
add edx, ecx
jb 0x10004c48
mov ebx, dword [esp]
cmp edx, ebx
ja 0x10004c4b
cmp ecx, 5
jae 0x10005265
mov eax, dword [esp + 4]
add eax, ebp
push ecx
lea edx, [esp + 0x28]
push edx
push ecx
push eax
call fcn.100163e8
add esp, 0x10
test al, al
jne 0x1000522b
mov eax, dword [esp + 0x18]
mov ebx, dword [esp]
mov dword [esp + 0x1c], edi
cmp edi, ebx
mov esi, dword [esp + 4]
ja 0x10004c5b
cmp eax, edi
jbe 0x10004bdd
mov dword [esp], str.null_G
mov dword [esp + 4], 4
jmp 0x10004c7b
mov dword [esp], 0x100542f4
mov dword [esp + 4], 0
mov edi, 0xb
push 1
push edi
call fcn.100101fa
add esp, 8
lea ecx, [esp + 0x74]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov dword [ecx + 8], edi
xor esi, esi
push esi
push edi
push ecx
call fcn.10001f90
add esp, 0xc
lea eax, [0x1004c944]
lea ecx, [esp + 0xc]
mov dword [ecx], eax
mov eax, dword [ecx]
mov dword [ecx], 0x91bb089d
lea edi, [esp + 0xc]
push dword [edi]
push eax
call fcn.100073f3
add esp, 8
mov dword [edi + 8], esi
xorps xmm0, xmm0
movsd qword [edi], xmm0
mov ecx, 0xfffffffc
mov edx, dword [ecx + 0x100547d8]
xor edx, dword [eax + ecx + 4]
mov dword [esp + ecx + 0x10], edx
add ecx, 4
cmp ecx, 8
jb 0x10004cd6
lea esi, [esp + 0xc]
mov eax, dword [esi + 8]
lea ebx, [esp + 0x34]
mov dword [ebx + 8], eax
movsd xmm0, qword [esi]
movsd qword [ebx], xmm0
push 0xc
push ebx
call fcn.1000d642
add esp, 8
mov edi, eax
lea eax, [0x1004b434]
mov dword [esi], eax
mov eax, dword [esi]
mov dword [esi], 0xad186356
lea esi, [esp + 0xc]
push dword [esi]
push eax
call fcn.100075bc
add esp, 8
xorps xmm0, xmm0
movsd qword [esi], xmm0
mov dword [esi + 8], 0
mov ecx, 0xfffffffc
mov edx, dword [ecx + 0x100547e4]
xor edx, dword [eax + ecx + 4]
mov dword [esp + ecx + 0x10], edx
add ecx, 4
cmp ecx, 8
jb 0x10004d41
lea eax, [esp + 0xc]
mov ecx, dword [eax + 8]
mov dword [esp + 0x50], ecx
movsd xmm0, qword [eax]
movsd qword [esp + 0x48], xmm0
lea ecx, [0x10050dea]
mov dword [eax], ecx
mov ecx, dword [eax]
mov dword [eax], 0x84b001ac
lea ebp, [esp + 0xc]
push dword [ebp]
push ecx
call fcn.10007520
add esp, 8
xorps xmm0, xmm0
movups xmmword [ebp], xmm0
mov ecx, 0xfffffffc
mov edx, dword [ecx + 0x100547f0]
xor edx, dword [eax + ecx + 4]
mov dword [esp + ecx + 0x10], edx
add ecx, 4
cmp ecx, 0xc
jb 0x10004d98
mov al, byte [eax + 0x10]
xor al, 0x10
movups xmm0, xmmword [esp + 0xc]
movups xmmword [esp + 0x34], xmm0
mov byte [esp + 0x44], al
lea esi, [esp + 0x48]
push 0x11
push ebx
push 0xc
push esi
call fcn.1000d526
add esp, 0x10
push 0xb
push dword [esp + 0x7c]
call eax
push edi
call dword [sym.imp.kernel32.dll_FreeLibrary]
movsd xmm0, qword [esp + 0x74]
movsd qword [esp + 0xc], xmm0
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
lea edi, [esp + 0xa4]
push eax
push dword [esp + 0x14]
push 0x100547fd
push edi
call fcn.100021cc
add esp, 0x10
push ebp
call fcn.10001590
add esp, 4
push ebp
call fcn.10010490
add esp, 4
mov ebp, dword [edi + 4]
mov eax, dword [edi + 8]
cmp eax, 0xb
jbe 0x10004e43
cmp byte [ebp + 0xb], 0xbf
jg 0x10004e45
push 0x10054940
push 0xb
push 0
push eax
push ebp
call fcn.10053c30
jne 0x10004e33
xor ebx, ebx
mov eax, 0xb
push ebx
push eax
call fcn.100101fa
add esp, 8
mov edi, edx
movsd xmm0, qword [ebp]
movsd qword [edx], xmm0
mov ecx, dword [ebp + 7]
mov dword [edx + 7], ecx
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
mov eax, 0xb
mov dword [esp + 0xa0], eax
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], 1
mov dword [esp + 0x50], ebx
mov eax, 0x2e
lea edx, [esp + 0xc]
mov dword [edx], eax
mov dword [edx + 4], edi
movaps xmm0, xmmword [0x10054260]
movups xmmword [edx + 8], xmm0
mov dword [edx + 0x18], eax
lea ecx, [esp + 0x34]
call fcn.10002453
mov ebp, 0
lea eax, [esp + 0x34]
cmp dword [eax], ebx
je 0x10004f03
xor eax, eax
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
lea edx, [edi + eax]
sub ecx, eax
push ecx
push edx
push esi
call fcn.10010137
add esp, 0xc
push 1
push 0x1005455c
push esi
call fcn.10010137
add esp, 0xc
lea ecx, [esp + 0x34]
lea edx, [esp + 0xc]
call fcn.10002453
cmp dword [esp + 0x34], 0
mov eax, ebp
jne 0x10004ec5
add edi, ebp
mov eax, 0xb
sub eax, ebp
push eax
push edi
push esi
call fcn.10010137
add esp, 0xc
mov ebp, dword [esp + 0x50]
mov dword [esp + 0x94], ebp
movsd xmm0, qword [esp + 0x48]
movsd qword [esp + 0x8c], xmm0
mov edi, dword [esp + 0x90]
mov dword [esp + 0x48], ebx
xor ecx, ecx
inc ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebx
mov eax, 0x2b
lea edx, [esp + 0xc]
mov dword [edx], eax
mov dword [edx + 4], edi
mov dword [edx + 8], ebp
mov dword [edx + 0xc], ebx
mov dword [esp + 8], ebp
mov dword [edx + 0x10], ebp
mov dword [edx + 0x14], ecx
mov dword [edx + 0x18], eax
lea ebp, [esp + 0x34]
mov ecx, ebp
call fcn.10002453
cmp dword [ebp], ebx
je 0x10004fba
xor eax, eax
lea ebp, [esp + 0xc]
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
lea edx, [edi + eax]
sub ecx, eax
push ecx
push edx
push esi
call fcn.10010137
add esp, 0xc
push 1
push 0x1005455d
push esi
call fcn.10010137
add esp, 0xc
lea ecx, [esp + 0x34]
mov edx, ebp
call fcn.10002453
cmp dword [esp + 0x34], 0
mov eax, ebx
jne 0x10004f7e
add edi, ebx
mov eax, dword [esp + 8]
sub eax, ebx
push eax
push edi
push esi
call fcn.10010137
add esp, 0xc
mov edi, dword [esp + 0x50]
mov dword [esp + 0x88], edi
movsd xmm0, qword [esp + 0x48]
movsd qword [esp + 0x80], xmm0
mov ebx, dword [esp + 0x84]
xor ebp, ebp
mov dword [esp + 0x48], ebp
xor ecx, ecx
inc ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebp
mov eax, 0x2f
lea edx, [esp + 0xc]
mov dword [edx], eax
mov dword [edx + 4], ebx
mov dword [edx + 8], edi
mov dword [edx + 0xc], ebp
mov dword [esp + 8], edi
mov dword [edx + 0x10], edi
mov dword [edx + 0x14], ecx
mov dword [edx + 0x18], eax
lea edi, [esp + 0x34]
mov ecx, edi
call fcn.10002453
mov ebp, 0
xor eax, eax
cmp dword [edi], eax
je 0x10005078
xor eax, eax
lea edi, [esp + 0xc]
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
lea edx, [ebx + eax]
sub ecx, eax
push ecx
push edx
push esi
call fcn.10010137
add esp, 0xc
push 1
push 0x1005455e
push esi
call fcn.10010137
add esp, 0xc
lea ecx, [esp + 0x34]
mov edx, edi
call fcn.10002453
cmp dword [esp + 0x34], 0
mov eax, ebp
jne 0x1000503c
add ebx, ebp
mov eax, dword [esp + 8]
sub eax, ebp
push eax
push ebx
push esi
call fcn.10010137
add esp, 0xc
mov eax, dword [esp + 0x50]
lea edi, [esp + 0xb0]
mov dword [edi + 8], eax
movsd xmm0, qword [esp + 0x48]
movsd qword [edi], xmm0
lea esi, [esp + 0x80]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x8c]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x98]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x18], eax
xor ebp, ebp
push ebp
push 0x10054bf4
push 2
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x44]
push eax
call fcn.10006b6c
add esp, 0x14
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
push ebp
push esi
call fcn.100101fa
add esp, 8
mov dword [esp], eax
mov dword [esp + 4], edx
push esi
push edi
push edx
call fcn.10045a70
add esp, 0xc
lea eax, [esp + 0x28]
mov ecx, dword [eax + 4]
mov dword [esp + 8], ecx
mov ebx, dword [eax + 8]
push ebp
push ebx
call fcn.100101fa
add esp, 8
mov dword [esp + 0x54], eax
mov edi, edx
push ebx
push dword [esp + 0xc]
push edx
call fcn.10045a70
add esp, 0xc
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov dword [ebp], eax
mov dword [ebp + 4], edi
mov dword [ebp + 8], ebx
mov eax, dword [esp]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 4]
mov dword [ebp + 0x10], eax
mov dword [ebp + 0x14], esi
movsd xmm0, qword [esp + 0x5c]
movsd qword [ebp + 0x18], xmm0
mov eax, dword [esp + 0x64]
mov dword [ebp + 0x20], eax
lea esi, [esp + 0x34]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0xb0]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0xa4]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x68]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
lea esi, [esp + 0x28]
push esi
call fcn.10001590
add esp, 4
push esi
call fcn.10010490
add esp, 4
mov eax, ebp
add esp, 0xbc
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
cmp edi, esi
jne 0x1000523b
mov edx, eax
jmp 0x10005257
mov edx, eax
sub edx, ebp
jbe 0x10005255
cmp byte [ecx + ebp], 0xbf
jg 0x10005257
push 0x100547c4
push eax
push ebp
push eax
push ecx
call fcn.10053c30
jne 0x10005247
mov dword [esp + 4], edx
add ecx, ebp
mov dword [esp], ecx
jmp 0x10004c7b
push 0x10054538
push 4
push ecx
call fcn.10053bb0
push ebx
push edi
push esi
sub esp, 0x20
mov esi, edx
mov edi, ecx
mov ebx, esp
push edx
push ecx
push ebx
call fcn.10028450
add esp, 0xc
cmp byte [ebx], 4
jne 0x10005295
push 0
call fcn.10023300
push 0xae4a2e1c
push 0x99353ab8
call fcn.10003bab
add esp, 8
mov ebx, eax
add esi, edi
lea edx, [esp + 0x14]
mov dword [edx], edi
mov dword [edx + 4], esi
mov word [edx + 8], 0
lea esi, [esp + 8]
mov ecx, esi
call fcn.1000178e
mov ecx, esi
call fcn.10001f6b
xor edi, edi
push 4
push edi
push dword [esi + 4]
call ebx
push edi
call fcn.10023300