Function at 0x10013660
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x10156499
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xa4
mov al, byte [0x1018c38f]
push ebx
push ebp
push esi
mov esi, dword [esp + 0xc0]
xor ebp, ebp
dec al
cmp esi, ebp
push edi
mov byte [esp + 0x10], 0x38
mov byte [0x1018c38f], al
mov byte [esp + 0x13], al
jne 0x100136ab
mov eax, 0x80004003
jmp 0x100145ac
lea eax, [esp + 0x54]
mov dword [esp + 0xbc], 1
push eax
call dword [sym.imp.xpcom.dll_NS_StringContainerInit]
add esp, 4
mov cl, byte [0x1018c38b]
mov edx, dword [esi]
lea eax, [esp + 0x54]
mov dword [esp + 0xbc], 2
push eax
push esi
mov byte [esp + 0x19], cl
call dword [edx + 0xc]
mov edi, eax
test edi, 0x80000000
je 0x10013719
lea ecx, [esp + 0x54]
mov dword [esp + 0xbc], 3
push ecx
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, edi
jmp 0x100145ac
lea ecx, [esp + 0x54]
mov byte [0x1018c38e], 0x63
call fcn.10001590
mov dl, byte [esp + 0x26]
sub esp, 0x10
mov edi, esp
mov dword [esp + 0x48], esp
push ebp
mov ecx, edi
mov ebx, eax
mov byte [edi], dl
call fcn.1000bc70
push ebx
call fcn.1013c2c2
add esp, 4
mov ecx, edi
push eax
push ebx
call fcn.1000bf40
lea eax, [esp + 0x38]
mov byte [esp + 0xcc], 2
push eax
call fcn.10023160
add esp, 0x14
mov eax, 0x16b
mov ecx, dword [0x1018c36c]
cdq
idiv dword [0x1018c370]
mov eax, dword [esp + 0x30]
mov byte [esp + 0xbc], 6
mov dl, byte [edx + ecx]
sub dl, 0x3a
cmp eax, ebp
mov byte [0x1018c38a], dl
je 0x10014573
mov al, byte [0x10194b28]
mov word [esp + 0x44], 0x43
test al, 1
mov word [esp + 0x46], 0x10
mov word [esp + 0x48], 0x11
mov word [esp + 0x4a], 0x1b
mov word [esp + 0x4c], 0x19
mov word [esp + 0x4e], 4
jne 0x100137f5
mov bl, al
lea eax, [esp + 0x44]
or bl, 1
push eax
mov ecx, 0x10194b2c
mov byte [0x10194b28], bl
call fcn.10015730
push 0x10014610
call fcn.1013c36b
add esp, 4
mov eax, dword [0x10194b2c]
lea ecx, [esp + 0x28]
push eax
call fcn.10015bd0
test eax, eax
je 0x10014573
mov dword [esp + 0x1c], ebp
mov cl, byte [esp + 0x11]
mov byte [esp + 0xbc], 0xa
mov byte [0x1018c38f], cl
push ebp
lea ecx, [esp + 0x20]
call fcn.10001f90
mov edx, dword [esi]
lea eax, [esp + 0x1c]
push eax
push esi
call dword [edx + 0x20]
mov esi, eax
test esi, 0x80000000
je 0x10013890
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea ecx, [esp + 0x54]
mov dword [esp + 0xbc], 0xc
push ecx
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, esi
jmp 0x100145ac
mov eax, 0x2c2
mov dword [esp + 0x40], ebp
cdq
idiv dword [0x1018c370]
mov eax, dword [0x1018c36c]
mov byte [esp + 0x12], 0xd7
mov cl, byte [edx + eax]
push ecx
call fcn.10012510
mov ecx, dword [0x1018c370]
add al, 0x31
mov byte [esp + 0x1c], al
mov eax, 0x25f
cdq
idiv ecx
mov esi, dword [0x1018c36c]
mov al, byte [0x1018c388]
push 0x2b
mov dl, byte [edx + esi]
push edx
mov edx, dword [esp + 0x24]
push eax
mov eax, 0xd4
push edx
cdq
idiv ecx
mov al, byte [edx + esi]
push eax
call fcn.10012700
mov byte [esp + 0x29], al
mov eax, dword [esp + 0x34]
add esp, 0x18
lea edx, [esp + 0x40]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x10]
mov esi, eax
test esi, 0x80000000
je 0x1001395e
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea eax, [esp + 0x54]
mov dword [esp + 0xbc], 0xf
push eax
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, esi
jmp 0x100145ac
mov eax, 0x82
mov ecx, dword [0x1018c36c]
cdq
idiv dword [0x1018c370]
mov bl, byte [0x1018c389]
mov eax, dword [esp + 0x40]
xor edi, edi
mov dword [esp + 0x18], edi
mov dl, byte [edx + ecx]
sub dl, bl
sub dl, 0x39
cmp eax, ebp
mov byte [0x1018c38c], dl
jbe 0x10013e32
mov bl, 0xa
mov byte [0x1018c38e], 0xfc
mov dword [esp + 0x20], ebp
mov al, byte [esp + 0x10]
mov byte [esp + 0xbc], 0x12
mov byte [0x1018c38b], al
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x20]
mov dword [esp + 0x20], ebp
mov ecx, dword [eax]
push edx
push edi
push eax
call dword [ecx + 0xc]
mov esi, eax
test esi, 0x80000000
jne 0x1001421c
mov al, byte [0x1018c38d]
push 0x1c
push eax
call fcn.10012510
mov ecx, dword [esp + 0x19]
add esp, 4
push eax
push ecx
call fcn.10012710
mov byte [0x1018c389], al
mov eax, dword [esp + 0x2c]
add esp, 0xc
cmp eax, ebp
jne 0x10013a06
jmp 0x10013e10
lea ecx, [esp + 0x50]
mov dword [esp + 0x50], ebp
mov edx, dword [eax]
push ecx
push eax
mov byte [esp + 0x18], 0x10
call dword [edx + 0x18]
mov esi, eax
test esi, 0x80000000
jne 0x1001427c
mov cl, byte [esp + 0x13]
mov dl, 0xc
sub dl, cl
cmp word [esp + 0x50], 3
mov byte [esp + 0x49], dl
jne 0x10013ce9
mov bl, cl
mov ecx, dword [0x1018c370]
inc bl
mov esi, dword [0x1018c36c]
mov byte [esp + 0x13], bl
mov eax, dword [esp + 0x11]
push eax
mov eax, 0x90
cdq
idiv ecx
mov eax, 0xc1
mov dl, byte [edx + esi]
sub dl, 0x1c
push edx
push 0xffffffffffffff9f
cdq
idiv ecx
mov al, byte [edx + esi]
push eax
mov al, byte [0x1018c389]
imul bl
push eax
call fcn.10012700
mov byte [esp + 0x24], al
lea ecx, [esp + 0x98]
mov byte [esp + 0xd0], 0x1d
push ecx
call dword [sym.imp.xpcom.dll_NS_StringContainerInit]
add esp, 0x18
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x84]
push ecx
push eax
mov edx, dword [eax]
mov byte [esp + 0xc4], 0x1e
mov bl, 0x75
call dword [edx + 0x10]
mov esi, eax
test esi, 0x80000000
jne 0x100142dc
mov al, byte [0x1018c38b]
mov dl, byte [esp + 0x12]
mov cl, al
inc dl
inc al
mov byte [esp + 0x12], dl
mov edx, dword [esp + 0x11]
mov byte [0x1018c38b], al
mov eax, dword [esp + 0x12]
push 0x3e
push eax
push 0x5f
push ecx
push edx
push eax
push 0x17
call fcn.10012700
add esp, 0x14
push eax
mov al, byte [0x1018c38d]
push eax
call fcn.10012520
mov cl, byte [esp + 0x36]
add esp, 0x10
mov byte [esp + 0x64], cl
lea ecx, [esp + 0x64]
push ebp
mov byte [esp + 0x15], al
call fcn.1000bc70
push str.__t_r_n
call fcn.1013c2c2
add esp, 4
mov esi, eax
lea ecx, [esp + 0x64]
push 1
push esi
call fcn.1000c010
test al, al
je 0x10013b5d
mov edx, dword [esp + 0x68]
push esi
push str.__t_r_n
push edx
call fcn.100017d0
add esp, 0xc
lea ecx, [esp + 0x64]
push esi
call fcn.1000bff0
lea eax, [esp + 0x38]
push ebp
lea ecx, [esp + 0x88]
push eax
push ecx
mov byte [esp + 0xc8], 0x25
call dword [sym.imp.xpcom.dll_NS_StringGetData]
mov dl, byte [esp + 0x32]
mov edi, dword [esp + 0x44]
add esp, 0xc
lea ecx, [esp + 0x74]
mov byte [esp + 0x74], dl
push ebp
call fcn.1000bc70
push edi
call fcn.1013c2c2
add esp, 4
mov esi, eax
lea ecx, [esp + 0x74]
push 1
push esi
call fcn.1000c010
test al, al
je 0x10013bc6
mov eax, dword [esp + 0x78]
push esi
push edi
push eax
call fcn.100017d0
add esp, 0xc
lea ecx, [esp + 0x74]
push esi
call fcn.1000bff0
lea ecx, [esp + 0x64]
lea edx, [esp + 0x74]
push ecx
lea eax, [esp + 0x98]
push edx
push eax
mov byte [esp + 0xc8], 0x26
call fcn.10022dc0
add esp, 0xc
push 1
lea ecx, [esp + 0x78]
mov byte [esp + 0xc0], 0x29
call fcn.1000bc70
push 1
lea ecx, [esp + 0x68]
mov byte [esp + 0xc0], 0x28
call fcn.1000bc70
mov eax, dword [esp + 0x9c]
mov byte [0x1018c38f], 0x88
cmp eax, ebp
je 0x10013cae
mov al, byte [0x10194b30]
mov word [esp + 0x26], 0x10
test al, 1
jne 0x10013c57
lea ecx, [esp + 0x26]
or al, 1
push ecx
mov ecx, 0x10194b34
mov byte [0x10194b30], al
call fcn.100153e0
push 0x10014620
call fcn.1013c36b
add esp, 4
mov edx, dword [0x10194b34]
lea eax, [esp + 0x94]
push edx
lea ecx, [esp + 0xa8]
push eax
push ecx
call fcn.1000cf10
add esp, 0xc
mov edx, dword [0x1016a210]
mov ecx, dword [esp + 0xc8]
push edx
push ebp
push eax
mov byte [esp + 0xc8], 0x2a
call fcn.10015a20
push 1
lea ecx, [esp + 0xa8]
mov byte [esp + 0xc0], 0x28
call fcn.1000bc70
mov byte [esp + 0x11], 0x16
push 1
lea ecx, [esp + 0x98]
mov byte [esp + 0xc0], 0x1e
call fcn.1000bc70
lea eax, [esp + 0x84]
mov byte [esp + 0xbc], 0x2b
push eax
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov edi, dword [esp + 0x18]
mov byte [esp + 0xbc], 0x12
mov al, byte [esp + 0xcc]
test al, al
je 0x10013e10
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0x20]
push ecx
push edx
push eax
call fcn.10013660
mov esi, eax
add esp, 0xc
test esi, 0x80000000
jne 0x10014353
mov ecx, dword [0x1018c370]
mov eax, 0x1e3
cdq
idiv ecx
inc bl
mov eax, 0xc8
mov byte [esp + 0x4a], bl
mov esi, dword [0x1018c36c]
mov ebx, edx
cdq
idiv ecx
mov al, byte [ebx + esi]
imul byte [edx + esi]
mov bl, al
mov al, byte [0x1018c388]
add bl, al
dec al
mov byte [0x1018c388], al
mov eax, 0x1e8
cdq
idiv ecx
mov cl, byte [edx + esi]
push ecx
push 0xffffffffffffffb8
push 0xffffffffffffffe7
push 0xffffffffffffffbc
push 0xffffffffffffffc7
push 0x4e
call fcn.10012520
push eax
push 0x78
push 0x51
call fcn.10012710
push eax
mov al, byte [esp + 0x3a]
mov cl, 0x62
mov edx, dword [esp + 0x38]
imul cl
push edx
push eax
call fcn.10012710
add esp, 0x28
mov dl, 0x98
mov ecx, dword [esp + 0x51]
push eax
mov al, byte [0x1018c388]
imul dl
push eax
mov eax, dword [esp + 0x23]
push 0x79
push eax
push 0x1e
push ecx
push 0x79
call fcn.10012700
mov edx, dword [esp + 0x6e]
add esp, 0x14
push eax
push 0x16
push 0xffffffffffffffb8
push edx
push 0xfffffffffffffff0
push 0xffffffffffffffcd
push 0xffffffffffffff8e
call fcn.10012700
add esp, 0x14
push eax
call fcn.10012710
add esp, 0xc
push eax
call fcn.10012520
mov cl, 0x17
mov dl, byte [0x1018c38b]
imul cl
add esp, 0x10
push eax
mov eax, 0x67
push edx
cdq
idiv dword [0x1018c370]
mov eax, dword [0x1018c36c]
mov cl, byte [edx + eax]
push ecx
push ebx
call fcn.10012700
add esp, 0x14
lea ecx, [esp + 0x20]
mov byte [esp + 0xbc], 0xa
call fcn.10020761
mov eax, dword [esp + 0x40]
inc edi
cmp edi, eax
mov dword [esp + 0x18], edi
jb 0x10013996
mov al, byte [0x10194b38]
mov word [esp + 0x38], 0x54
test al, 1
mov word [esp + 0x3a], 0xd
mov word [esp + 0x3c], 0x1f
jne 0x10013e77
mov bl, al
lea ecx, [esp + 0x38]
or bl, 1
push ecx
mov ecx, 0x10194b3c
mov byte [0x10194b38], bl
call fcn.100157c0
push 0x10014630
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10194b3c]
push esi
call fcn.1013c2c2
mov edx, dword [esp + 0x34]
add esp, 4
lea ecx, [esp + 0x28]
push eax
push esi
push edx
push ebp
call fcn.1000d2b0
cmp eax, ebp
je 0x10014413
mov al, byte [0x10194b40]
test al, 1
jne 0x10013ef6
mov cl, al
push 4
or cl, 1
mov byte [0x10194b40], cl
call fcn.1013c2df
add esp, 4
mov ecx, 0x10194b44
mov dword [0x10194b44], eax
push 0x63
push 0xd
call fcn.1002ea10
mov edx, dword [0x10194b44]
mov ecx, 0x70
sub ecx, eax
push 0x10014640
mov word [edx], cx
mov eax, dword [0x10194b44]
mov word [eax + 2], bp
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10194b44]
push esi
call fcn.1013c2c2
mov ecx, dword [esp + 0x34]
add esp, 4
push eax
push esi
push ecx
push ebp
lea ecx, [esp + 0x38]
call fcn.1000d2b0
cmp eax, ebp
je 0x10014413
mov al, byte [0x10194b48]
mov word [esp + 0x10], 0x86
test al, 1
mov word [esp + 0x12], 0x85
mov word [esp + 0x14], 0x94
mov word [esp + 0x16], 0x9b
jne 0x10013fac
mov bl, al
push 0xa
or bl, 1
mov byte [0x10194b48], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194b4c], eax
xor esi, esi
mov di, word [esp + esi + 0x10]
push 0xf5
mov edx, edi
mov ecx, 0x10194b4c
and edx, 0xffff
push edx
call fcn.100a8ee0
mov ecx, dword [0x10194b4c]
add eax, 0xf5
xor eax, edi
mov word [esi + ecx], ax
add esi, 2
cmp esi, 8
jb 0x10013f5f
mov edx, dword [0x10194b4c]
push 0x10014650
mov word [edx + 8], bp
call fcn.1013c36b
add esp, 4
mov esi, dword [0x10194b4c]
push esi
call fcn.1013c2c2
add esp, 4
lea ecx, [esp + 0x28]
push eax
mov eax, dword [esp + 0x34]
push esi
push eax
push ebp
call fcn.1000d2b0
cmp eax, ebp
je 0x10014413
mov al, byte [0x10194b50]
mov word [esp + 0x18], 0x44
test al, 1
mov word [esp + 0x1a], 0x10
jne 0x10014057
mov bl, al
push 6
or bl, 1
mov byte [0x10194b50], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194b54], eax
mov edi, 0x30
xor esi, esi
mov bx, word [esp + esi + 0x18]
push edi
mov ecx, ebx
and ecx, 0xffff
push ecx
mov ecx, 0x10194b54
call fcn.1004a650
mov edx, dword [0x10194b54]
xor eax, edi
xor eax, ebx
xor edi, edi
mov word [esi + edx], ax
mov eax, dword [0x10194b54]
mov di, word [esi + eax]
add esi, 2
cmp esi, 4
jb 0x1001400c
push 0x10014660
mov word [eax + 4], bp
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194b54]
push edi
call fcn.1013c2c2
mov esi, eax
mov eax, dword [esp + 0x34]
add esp, 4
cmp eax, esi
mov ebx, eax
mov ecx, eax
jb 0x10014076
mov ecx, esi
mov eax, dword [esp + 0x2c]
push ecx
push edi
push eax
call fcn.100145d0
add esp, 0xc
cmp eax, ebp
jne 0x1001409c
cmp ebx, esi
jb 0x1001409c
xor eax, eax
cmp ebx, esi
setne al
cmp eax, ebp
je 0x10014413
mov al, byte [0x10194b58]
mov word [esp + 0x18], 0x68
test al, 1
mov word [esp + 0x1a], 0x65
jne 0x10014116
mov bl, al
push 6
or bl, 1
mov byte [0x10194b58], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194b5c], eax
xor edi, edi
mov si, word [esp + edi + 0x18]
push 4
mov eax, esi
mov ecx, 0x10194b5c
and eax, 0xffff
push eax
call fcn.1002ea10
mov ecx, dword [0x10194b5c]
sub esi, eax
add esi, 4
mov word [edi + ecx], si
add edi, 2
cmp edi, 4
jb 0x100140cf
mov edx, dword [0x10194b5c]
push 0x10014670
mov word [edx + 4], bp
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194b5c]
push edi
call fcn.1013c2c2
mov esi, eax
mov eax, dword [esp + 0x34]
add esp, 4
cmp eax, esi
mov ebx, eax
mov ecx, eax
jb 0x10014135
mov ecx, esi
mov eax, dword [esp + 0x2c]
push ecx
push edi
push eax
call fcn.100145d0
add esp, 0xc
cmp eax, ebp
jne 0x1001415b
cmp ebx, esi
jb 0x1001415b
xor eax, eax
cmp ebx, esi
setne al
cmp eax, ebp
je 0x10014413
mov al, byte [0x10194b60]
test al, 1
jne 0x100141bc
mov bl, al
push 4
or bl, 1
mov byte [0x10194b60], bl
call fcn.1013c2df
add esp, 4
mov ecx, 0x10194b64
mov dword [0x10194b64], eax
push 0xbd
push 0xd5
call fcn.100a8ee0
mov ecx, dword [0x10194b64]
add eax, 0xbd
xor eax, 0xd5
push 0x10014680
mov word [ecx], ax
mov edx, dword [0x10194b64]
mov word [edx + 2], bp
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194b64]
push 1
lea eax, [esp + 0xa8]
push 0
push eax
lea ecx, [esp + 0x34]
call fcn.10015220
mov ebx, eax
push edi
mov byte [esp + 0xc0], 0x32
call fcn.1013c2c2
mov ebp, dword [ebx + 8]
add esp, 4
cmp ebp, eax
mov esi, ebp
jb 0x100141f5
mov esi, eax
mov ecx, dword [ebx + 4]
mov edx, edi
test esi, esi
jbe 0x100143c3
mov di, word [ecx]
cmp di, word [edx]
jne 0x100143b3
add ecx, 2
add edx, 2
dec esi
jne 0x10014202
jmp 0x100143c3
lea ecx, [esp + 0x20]
mov byte [esp + 0xbc], 0xa
call fcn.10020761
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea edx, [esp + 0x54]
mov dword [esp + 0xbc], 0x15
push edx
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, esi
jmp 0x100145ac
lea ecx, [esp + 0x20]
mov byte [esp + 0xbc], 0xa
call fcn.10020761
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea eax, [esp + 0x54]
mov dword [esp + 0xbc], 0x1a
push eax
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, esi
jmp 0x100145ac
mov edi, dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
lea ecx, [esp + 0x84]
push ecx
mov byte [esp + 0xc0], 0x1f
call edi
add esp, 4
lea ecx, [esp + 0x20]
mov byte [esp + 0xbc], 0xa
call fcn.10020761
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea edx, [esp + 0x54]
mov dword [esp + 0xbc], 0x23
push edx
call edi
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, esi
jmp 0x100145ac
lea ecx, [esp + 0x20]
mov byte [esp + 0xbc], 0xa
call fcn.10020761
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea eax, [esp + 0x54]
mov dword [esp + 0xbc], 0x2f
push eax
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
mov eax, esi
jmp 0x100145ac
mov cx, word [ecx]
cmp cx, word [edx]
sbb ecx, ecx
and ecx, 0xfffffffe
inc ecx
test ecx, ecx
jne 0x100143d5
cmp ebp, eax
jae 0x100143cc
or ecx, 0xffffffff
jmp 0x100143d3
xor ecx, ecx
cmp ebp, eax
setne cl
test ecx, ecx
mov ecx, dword [esp + 0xa8]
mov byte [esp + 0xbc], 0xa
sete bl
test ecx, ecx
je 0x10014409
mov al, byte [ecx - 1]
test al, al
je 0x100143fd
cmp al, 0xff
je 0x100143fd
dec al
mov byte [ecx - 1], al
jmp 0x10014409
lea eax, [ecx - 2]
push eax
call fcn.101307a0
add esp, 4
test bl, bl
je 0x1001450b
xor ebp, ebp
mov al, byte [0x10194b68]
mov word [esp + 0x18], 0x3d
test al, 1
mov word [esp + 0x1a], 7
jne 0x10014496
mov bl, al
push 6
or bl, 1
mov byte [0x10194b68], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194b6c], eax
mov edi, 0x30
xor esi, esi
mov bx, word [esp + esi + 0x18]
push edi
mov edx, ebx
mov ecx, 0x10194b6c
and edx, 0xffff
push edx
call fcn.1004a650
mov ecx, dword [0x10194b6c]
xor eax, edi
xor eax, ebx
xor edi, edi
mov word [esi + ecx], ax
mov eax, dword [0x10194b6c]
mov di, word [esi + eax]
add esi, 2
cmp esi, 4
jb 0x1001444b
push 0x10014690
mov word [eax + 4], bp
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194b6c]
push edi
call fcn.1013c2c2
mov edx, dword [0x1016a210]
mov esi, eax
mov eax, dword [esp + 0xcc]
add esp, 4
sub edx, dword [eax + 8]
cmp edx, esi
ja 0x100144c0
call fcn.101307ab
cmp esi, ebp
jbe 0x1001450d
mov ecx, dword [esp + 0xc8]
mov ebx, esi
push ebp
add ebx, dword [ecx + 8]
push ebx
call fcn.1000c010
test al, al
je 0x1001450d
mov edx, dword [esp + 0xc8]
mov ecx, dword [edx + 8]
mov eax, dword [edx + 4]
lea ecx, [eax + ecx*2]
mov eax, edi
sub ecx, edi
mov di, word [eax]
mov word [eax + ecx], di
add eax, 2
dec esi
jne 0x100144ef
mov ecx, dword [edx + 4]
mov dword [edx + 8], ebx
mov word [ecx + ebx*2], bp
lea eax, [ecx + ebx*2]
jmp 0x1001450d
xor ebp, ebp
lea ecx, [esp + 0x1c]
mov byte [esp + 0xbc], 6
call fcn.10020761
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0xbc], 2
cmp ecx, ebp
je 0x1001454c
mov al, byte [ecx - 1]
test al, al
je 0x10014540
cmp al, 0xff
je 0x10014540
dec al
mov byte [ecx - 1], al
jmp 0x1001454c
add ecx, 0xfffffffe
push ecx
call fcn.101307a0
add esp, 4
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
lea edx, [esp + 0x54]
mov dword [esp + 0xbc], 0x34
push edx
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
jmp 0x1001459f
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc0], 2
call fcn.1000bc70
lea eax, [esp + 0x54]
mov dword [esp + 0xbc], 7
push eax
call dword [sym.imp.xpcom.dll_NS_StringContainerFinish]
add esp, 4
mov dword [esp + 0xbc], 0xffffffff
xor eax, eax
mov ecx, dword [esp + 0xb4]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0xb0
ret