Function at 0x47da98
Capabilities:
Get thread local storage value
Resolve function by parsing pe exports
Set thread local storage value

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xb0
mov eax, dword [0x4c3abc]
push ebx
mov ebx, ecx
lea ecx, [ebx + 0xbc]
cmp eax, dword [ecx]
push esi
setne byte [ebp + 0x5c]
cmp byte [ebp + 0x5c], 0
push edi
mov dword [ebp + 0x50], ebx
je 0x47dad0
push dword [ebp + 0x5c]
mov dword [ecx], eax
push 0
mov ecx, ebx
call fcn.0047d84e
mov ecx, ebx
call fcn.0047af58
mov ecx, dword [ebx + 0xc0]
call fcn.0044d65c
mov eax, dword [ebx + 0xc4]
add eax, 0x24
push eax
mov ecx, 0x4c9b34
call fcn.00470d07
and dword [ebp + 0x58], 0
call fcn.00429550
mov ecx, dword [0x4c60fc]
mov edi, dword [0x4c3b58]
test ecx, ecx
je 0x47db25
mov eax, dword [0x4c60f4]
add eax, 0x20
test byte [eax - 0x18], 4
je 0x47db1f
add edi, dword [eax]
add eax, 0x28
dec ecx
jne 0x47db17
mov eax, dword [ebx + 0xc0]
mov eax, dword [eax + 0x14]
cmp eax, edi
je 0x47dc0f
and dword [ebp + 0x6c], 0
test eax, eax
je 0x47dbda
xor esi, esi
mov eax, dword [ebx + 0x5c]
add eax, esi
cmp dword [eax], 1
jne 0x47db65
mov ecx, dword [eax + 4]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x88]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x80]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x84]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x8c]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x90]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0xc4]
call fcn.004444fe
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0xd0]
call fcn.004444fe
inc dword [ebp + 0x6c]
mov eax, dword [ebx + 0xc0]
mov ecx, dword [ebp + 0x6c]
add esi, 0xdc
cmp ecx, dword [eax + 0x14]
jne 0x47db44
push dword [ebx + 0x5c]
call fcn.004445cb
xor ecx, ecx
mov eax, edi
mov edx, 0xdc
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00444d45
imul edi, edi, 0xdc
push edi
push 0
push eax
mov dword [ebx + 0x5c], eax
call sub.MSVCRT.dll_memset
add esp, 0x14
and dword [ebp + 0x5c], 0
cmp dword [0x4c60fc], 0
je 0x47e204
and dword [ebp + 0x54], 0
mov eax, dword [ebp + 0x54]
mov ecx, dword [0x4c60f4]
add eax, ecx
test byte [eax + 8], 4
mov dword [ebp + 0x74], eax
je 0x47e1ee
mov ecx, dword [eax + 0x10]
call fcn.004363b4
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x47dc47
sub eax, edx
mov dword [ebp + 0x70], eax
cmp byte [0x4c6ce8], cl
je 0x47dc96
mov eax, dword [0x4c6cec]
cmp eax, 0xffffffff
je 0x47dc96
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dc98
push 0x20
call sub.MSVCRT.dll_malloc
mov ebx, dword [sym.imp.KERNEL32.DLL_TlsSetValue]
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
jmp 0x47dc9e
xor esi, esi
mov ebx, dword [sym.imp.KERNEL32.DLL_TlsSetValue]
mov eax, dword [ebp + 0x70]
inc eax
mov dword [esi + 0x14], eax
cmp byte [0x4c6ce8], 0
mov esi, dword [0x4c6cec]
je 0x47dcec
cmp esi, 0xffffffff
je 0x47dcec
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dce2
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
mov eax, esi
mov esi, dword [0x4c6cec]
jmp 0x47dcee
xor eax, eax
mov eax, dword [eax + 0x14]
call section..text
cmp byte [0x4c6ce8], 0
mov dword [ebp + 0x70], esp
je 0x47dd32
cmp esi, 0xffffffff
je 0x47dd32
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dd34
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
jmp 0x47dd34
xor esi, esi
mov eax, dword [ebp + 0x70]
mov dword [esi + 0x18], eax
cmp byte [0x4c6ce8], 0
mov eax, dword [0x4c6cec]
je 0x47dd80
cmp eax, 0xffffffff
je 0x47dd80
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dd76
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
mov eax, dword [0x4c6cec]
mov dword [ebp + 0x6c], esi
jmp 0x47dd84
and dword [ebp + 0x6c], 0
cmp byte [0x4c6ce8], 0
je 0x47ddbf
cmp eax, 0xffffffff
je 0x47ddbf
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47ddbb
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
mov edi, esi
jmp 0x47ddc1
xor edi, edi
mov eax, dword [ebp + 0x6c]
mov esi, dword [eax + 0x14]
mov eax, dword [ebp + 0x74]
mov ecx, dword [eax + 0x10]
call fcn.004363b4
mov ecx, dword [edi + 0x18]
push esi
push eax
push ecx
call sub.MSVCRT.dll_memcpy
mov dword [ebp + 0x48], eax
mov eax, dword [ebp + 0x74]
mov ecx, dword [eax + 0x10]
add esp, 0xc
call fcn.00435be8
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x47ddf1
sub eax, ecx
sar eax, 1
mov dword [ebp + 0x70], eax
cmp byte [0x4c6ce8], dl
je 0x47de3f
mov eax, dword [0x4c6cec]
cmp eax, 0xffffffff
je 0x47de3f
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47de41
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
jmp 0x47de41
xor esi, esi
mov eax, dword [ebp + 0x70]
inc eax
mov dword [esi + 0x14], eax
cmp byte [0x4c6ce8], 0
mov esi, dword [0x4c6cec]
je 0x47de8f
cmp esi, 0xffffffff
je 0x47de8f
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47de85
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
mov eax, esi
mov esi, dword [0x4c6cec]
jmp 0x47de91
xor eax, eax
mov eax, dword [eax + 0x14]
add eax, eax
call section..text
cmp byte [0x4c6ce8], 0
mov dword [ebp + 0x70], esp
je 0x47ded7
cmp esi, 0xffffffff
je 0x47ded7
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47ded9
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
jmp 0x47ded9
xor esi, esi
mov eax, dword [ebp + 0x70]
mov dword [esi + 0x18], eax
cmp byte [0x4c6ce8], 0
mov eax, dword [0x4c6cec]
je 0x47df24
cmp eax, 0xffffffff
je 0x47df24
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47df1b
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call ebx
mov eax, dword [0x4c6cec]
mov ebx, esi
jmp 0x47df26
xor ebx, ebx
cmp byte [0x4c6ce8], 0
je 0x47df65
cmp eax, 0xffffffff
je 0x47df65
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47df61
push 0x20
call sub.MSVCRT.dll_malloc
pop ecx
push 8
mov esi, eax
pop ecx
xor eax, eax
mov edi, esi
push esi
rep stosd dword es:[edi], eax
push dword [0x4c6cec]
call dword [sym.imp.KERNEL32.DLL_TlsSetValue]
mov edi, esi
jmp 0x47df67
xor edi, edi
mov eax, dword [ebp + 0x74]
mov ecx, dword [eax + 0x10]
mov esi, dword [ebx + 0x14]
call fcn.00435be8
mov ecx, dword [edi + 0x18]
lea edx, [esi + esi]
push edx
push eax
push ecx
call sub.MSVCRT.dll_memcpy
and dword [ebp + 0x68], 0
mov dword [ebp + 0x70], eax
mov eax, dword [ebp + 0x74]
add esp, 0xc
cmp dword [eax + 0x20], 0
je 0x47e1ee
mov eax, dword [ebp + 0x58]
imul eax, eax, 0xdc
and dword [ebp + 0x60], 0
mov dword [ebp + 0x6c], eax
mov eax, dword [ebp + 0x74]
mov edi, dword [eax + 0x18]
add edi, dword [ebp + 0x60]
xor ebx, ebx
cmp dword [0x4c3b58], ebx
je 0x47e027
mov eax, dword [0x4c3b50]
mov esi, dword [eax + ebx*4]
mov eax, dword [esi + 0x1c8]
test eax, eax
je 0x47e01e
cmp dword [esi + 0x1c4], 0
je 0x47e01e
cmp dword [esi + 0x1d8], 0
je 0x47e01e
push dword [ebp + 0x48]
push eax
call sub.MSVCRT.dll__stricmp
pop ecx
pop ecx
test eax, eax
jne 0x47e01e
push dword [edi + 8]
mov eax, dword [esi + 0x1c4]
push eax
call sub.MSVCRT.dll__stricmp
pop ecx
pop ecx
test eax, eax
jne 0x47e01e
push dword [edi + 4]
mov esi, dword [esi + 0x1d8]
push esi
call sub.MSVCRT.dll__wcsicmp
pop ecx
pop ecx
test eax, eax
je 0x47e1d8
inc ebx
cmp ebx, dword [0x4c3b58]
jne 0x47dfbd
mov eax, dword [ebp + 0x50]
mov esi, dword [eax + 0x5c]
add esi, dword [ebp + 0x6c]
inc dword [ebp + 0x58]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
add dword [ebp + 0x6c], 0xdc
mov dword [ebp + 0x4c], eax
mov dword [esi], 1
test ebx, ebx
je 0x47e080
mov eax, dword [edi + 4]
mov edx, ebx
mov cx, word [edx]
cmp cx, word [eax]
jne 0x47e077
test cx, cx
je 0x47e073
mov cx, word [edx + 2]
cmp cx, word [eax + 2]
jne 0x47e077
add edx, 4
add eax, 4
test cx, cx
jne 0x47e051
xor eax, eax
jmp 0x47e07c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e098
cmp dword [ebp + 0x4c], 1
jne 0x47e08d
mov ecx, ebx
call fcn.004444fe
mov ecx, dword [edi + 4]
call fcn.00444cee
mov dword [esi + 4], eax
test byte [edi + 0x24], 2
je 0x47e0b0
cmp byte [esi + 0x3d], 0xf
je 0x47e0cb
mov byte [esi + 0x3d], 0xf
mov edx, dword [0x4cfeec]
jmp 0x47e0c0
cmp byte [esi + 0x3d], 0xe
je 0x47e0cb
mov byte [esi + 0x3d], 0xe
mov edx, dword [0x4cfee8]
lea ecx, [esi + 0x84]
call fcn.0043ac3d
mov eax, dword [edi + 0x14]
mov dword [esi + 0x94], eax
mov eax, dword [ebp + 0x74]
mov eax, dword [eax]
shl eax, 0x10
or eax, dword [ebp + 0x68]
mov dword [esi + 0x78], eax
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x47e12b
mov eax, dword [esi + 0x80]
test eax, eax
je 0x47e11c
mov ecx, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x47e113
test dl, dl
je 0x47e10f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x47e113
inc eax
inc eax
inc ecx
inc ecx
test dl, dl
jne 0x47e0f5
xor eax, eax
jmp 0x47e118
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e136
mov edx, ebx
lea ecx, [esi + 0x80]
call fcn.0043ac65
jmp 0x47e136
lea ecx, [esi + 0x80]
call fcn.0043b306
mov eax, dword [edi + 0x20]
mov ecx, dword [esi + 0x88]
mov dword [esi + 0x7c], eax
movzx eax, word [edi + 0x18]
mov dword [esi + 0xa4], eax
movzx eax, word [edi + 0x1a]
mov dword [esi + 0xa8], eax
movzx eax, word [edi + 0x1c]
mov dword [esi + 0xac], eax
mov eax, dword [edi + 0xc]
mov dword [esi + 0xb0], eax
mov eax, dword [edi + 0x10]
mov dword [esi + 0xb4], eax
test ecx, ecx
je 0x47e1aa
mov edx, dword [ebp + 0x70]
mov eax, ecx
mov di, word [eax]
cmp di, word [edx]
jne 0x47e1a1
test di, di
je 0x47e19d
mov di, word [eax + 2]
cmp di, word [edx + 2]
jne 0x47e1a1
add eax, 4
add edx, 4
test di, di
jne 0x47e17b
xor eax, eax
jmp 0x47e1a6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e1c3
cmp dword [ebp + 0x4c], 1
jne 0x47e1b5
call fcn.004444fe
mov ecx, dword [ebp + 0x70]
call fcn.00444cee
mov dword [esi + 0x88], eax
and dword [esi + 0xd0], 0
or dword [esi + 0xd4], 0xffffffff
and dword [esi + 0xd8], 0
inc dword [ebp + 0x68]
mov eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x68]
add dword [ebp + 0x60], 0x28
cmp ecx, dword [eax + 0x20]
jne 0x47dfaa
inc dword [ebp + 0x5c]
mov eax, dword [ebp + 0x5c]
add dword [ebp + 0x54], 0x28
cmp eax, dword [0x4c60fc]
jne 0x47dc24
mov ecx, dword [0x4c9204]
test ecx, ecx
je 0x47e218
push 0x4c9b34
call fcn.00401707
and dword [ebp + 0x6c], 0
cmp dword [0x4c3b58], 0
je 0x47e855
mov eax, dword [ebp + 0x58]
imul eax, eax, 0xdc
mov dword [ebp + 0x5c], eax
mov eax, dword [0x4c3b50]
mov ecx, dword [ebp + 0x6c]
mov edi, dword [eax + ecx*4]
test byte [edi + 0x45], 2
je 0x47e843
mov eax, dword [ebp + 0x50]
mov esi, dword [eax + 0x5c]
add esi, dword [ebp + 0x5c]
inc dword [ebp + 0x58]
mov eax, dword [esi]
and dword [esi], 0
add dword [ebp + 0x5c], 0xdc
mov dword [esi + 0x78], edi
mov ebx, dword [edi + 0x1c4]
mov dword [ebp + 0x70], eax
test ebx, ebx
je 0x47e2b4
mov eax, dword [esi + 0x80]
test eax, eax
je 0x47e2a5
mov ecx, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x47e29c
test dl, dl
je 0x47e298
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x47e29c
inc eax
inc eax
inc ecx
inc ecx
test dl, dl
jne 0x47e27e
xor eax, eax
jmp 0x47e2a1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e2bf
mov edx, ebx
lea ecx, [esi + 0x80]
call fcn.0043ac65
jmp 0x47e2bf
lea ecx, [esi + 0x80]
call fcn.0043b306
and dword [esi + 0x7c], 0
cmp dword [ebp + 0x70], 1
jne 0x47e2d1
mov ecx, dword [esi + 4]
call fcn.004444fe
mov eax, dword [edi]
mov eax, dword [eax + 0x20]
mov dword [esi + 4], eax
mov eax, dword [edi]
mov ecx, dword [eax + 0x14]
mov dword [esi + 8], ecx
mov eax, dword [eax + 0x18]
mov dword [esi + 0xc], eax
mov eax, dword [edi + 0xd0]
mov dword [esi + 0x18], eax
mov eax, dword [edi + 0xd4]
mov dword [esi + 0x1c], eax
mov eax, dword [edi + 0xe8]
mov dword [esi + 0x20], eax
mov eax, dword [edi + 0xec]
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0xd8]
mov dword [esi + 0x28], eax
mov eax, dword [edi + 0xdc]
mov dword [esi + 0x2c], eax
mov eax, ecx
sub eax, dword [edi + 0x10c]
mov ecx, dword [esi + 0xc]
sbb ecx, dword [edi + 0x110]
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
mov ecx, edi
call fcn.004050d1
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], edx
test byte [edi + 0x44], 0x10
je 0x47e358
mov ecx, edi
call fcn.00406bca
cmp eax, 0xffffffff
je 0x47e358
xor eax, eax
inc eax
jmp 0x47e35a
xor eax, eax
mov byte [esi + 0x38], al
mov eax, dword [edi + 0x114]
mov dword [esi + 0xc0], eax
mov al, byte [edi + 0x40]
mov byte [esi + 0xcc], al
mov al, byte [edi + 0x3f]
mov ecx, edi
mov byte [esi + 0xcd], al
call fcn.00405087
mov dword [esi + 0x6c], eax
mov eax, dword [edi + 0x144]
mov dword [esi + 0x94], eax
mov eax, dword [edi + 0x148]
mov dword [esi + 0x98], eax
mov eax, dword [edi + 0x14c]
mov dword [esi + 0x9c], eax
mov eax, dword [edi + 0x184]
mov dword [esi + 0x70], eax
mov eax, dword [edi + 0x180]
mov dword [esi + 0x74], eax
mov eax, dword [edi + 0x178]
mov dword [esi + 0xa0], eax
mov eax, dword [edi + 0x1dc]
mov dword [esi + 0xa4], eax
mov eax, dword [edi + 0x1e0]
mov dword [esi + 0xa8], eax
mov eax, dword [edi + 0x1e4]
mov dword [esi + 0xac], eax
mov eax, dword [edi + 0x1e8]
mov dword [esi + 0xb0], eax
mov eax, dword [edi + 0x1ec]
or dword [esi + 0xc8], 0xffffffff
mov dword [esi + 0xb4], eax
mov eax, dword [edi + 0x1cc]
test eax, eax
je 0x47e44d
mov ecx, dword [0x4c3a18]
push eax
call fcn.00402f8f
mov ebx, eax
test ebx, ebx
je 0x47e44d
mov ecx, dword [ebx + 0x44]
call fcn.0043adb2
mov ecx, eax
call fcn.0043b014
lea ecx, [esi + 0xc4]
mov edx, eax
call fcn.0043ac3d
mov eax, dword [ebx + 0x38]
mov dword [esi + 0xc8], eax
jmp 0x47e458
lea ecx, [esi + 0xc4]
call fcn.0043b306
mov ecx, edi
call fcn.0040500e
mov word [esi + 0x3a], ax
push 7
lea eax, [esi + 0x48]
push eax
mov ecx, edi
call fcn.00406f43
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x50]
cmp eax, edx
jbe 0x47e48d
mov ecx, eax
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x54]
sub ecx, edx
cmp eax, ecx
jb 0x47e48d
sub eax, ecx
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0x54]
cmp ecx, eax
jbe 0x47e499
mov eax, ecx
mov dword [esi + 0x54], eax
mov eax, dword [edi + 0x1b8]
mov dword [esi + 0x64], eax
mov eax, dword [edi + 0x1b4]
mov ecx, edi
mov dword [esi + 0x60], eax
call fcn.00407569
mov dword [esi + 0x68], eax
mov al, byte [edi + 0x3c]
lea ebx, [esi + 0x84]
mov ecx, ebx
mov byte [esi + 0x3c], al
call fcn.0043b306
push ebx
lea eax, [esi + 0x3d]
push eax
mov ecx, edi
call fcn.00406368
mov dword [esi + 0x40], 0xff5050
test byte [edi + 0x43], 0x10
je 0x47e4ef
test byte [esi + 0x3c], 0x41
je 0x47e4ef
xor eax, eax
inc eax
jmp 0x47e4f1
xor eax, eax
cmp dword [ebp + 0x70], 1
mov byte [esi + 0x45], al
mov eax, dword [edi + 0x50]
mov dword [esi + 0xbc], eax
jne 0x47e50e
mov ecx, dword [esi + 0x88]
call fcn.004444fe
mov eax, dword [edi + 0x268]
mov dword [esi + 0x88], eax
mov al, byte [edi + 0x48]
xor ebx, ebx
mov byte [esi + 0x46], al
cmp dword [edi + 0x88], ebx
mov dword [ebp + 0x68], ebx
setne al
mov byte [esi + 0x44], al
cmp dword [edi + 0x88], ebx
je 0x47e574
mov eax, dword [edi + 0x80]
mov eax, dword [eax + ebx*4]
test byte [eax + 0x3a], 2
jne 0x47e56b
mov ecx, dword [eax + 0x10]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov byte [esi + 0x44], 0
cmp byte [0x4c92e1], 0
mov dword [ebp + 0x68], eax
jne 0x47e574
mov ecx, eax
call fcn.00443598
test al, al
je 0x47e574
inc ebx
cmp ebx, dword [edi + 0x88]
jne 0x47e539
cmp dword [edi + 0x78], 0
jbe 0x47e584
test byte [edi + 0x46], 2
jne 0x47e584
mov byte [esi + 0x44], 0
mov edx, dword [ebp + 0x68]
test edx, edx
je 0x47e5d2
lea ebx, [esi + 0x8c]
mov eax, dword [ebx]
test eax, eax
je 0x47e5c6
mov cx, word [eax]
cmp cx, word [edx]
jne 0x47e5bd
test cx, cx
je 0x47e5b9
mov cx, word [eax + 2]
cmp cx, word [edx + 2]
jne 0x47e5bd
add eax, 4
add edx, 4
test cx, cx
jne 0x47e597
xor eax, eax
jmp 0x47e5c2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e5dd
mov edx, dword [ebp + 0x68]
mov ecx, ebx
call fcn.0043ac3d
jmp 0x47e5dd
lea ecx, [esi + 0x8c]
call fcn.0043b306
lea ebx, [esi + 0x90]
mov ecx, ebx
call fcn.0043b306
mov eax, dword [ebp + 0x50]
mov eax, dword [eax + 0xc0]
mov eax, dword [eax + 0x2c]
mov al, byte [eax + 0x1c]
shr al, 7
not al
test al, 1
je 0x47e61a
movzx eax, byte [0x4c92e1]
push eax
push 0
lea eax, [ebp + 0x48]
push eax
push ebx
xor edx, edx
mov ecx, edi
call fcn.00415437
or dword [esi + 0xb8], 0xffffffff
mov eax, dword [ebp + 0x50]
mov eax, dword [eax + 0xc0]
mov eax, dword [eax + 0x2c]
mov al, byte [eax + 0x14]
shr al, 7
not al
test al, 1
je 0x47e655
test byte [edi + 0x208], 1
jne 0x47e649
mov ecx, edi
call fcn.0040706a
mov eax, dword [edi + 0x204]
mov dword [esi + 0xb8], eax
or dword [esi + 0xd4], 0xffffffff
xor eax, eax
lea ebx, [esi + 0xd0]
mov dword [ebx], eax
mov dword [esi + 0xd8], eax
cmp dword [0x4c9204], eax
je 0x47e829
mov edi, dword [edi]
mov ecx, dword [edi + 8]
cmp ecx, eax
mov dword [ebp + 0x54], ecx
mov dword [ebp + 0x74], eax
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x68], eax
mov dword [ebp + 0x4c], eax
mov byte [ebp + 0x66], al
mov byte [ebp + 0x65], al
mov byte [ebp + 0x67], al
jle 0x47e6f7
mov eax, dword [edi]
add eax, 0x23
mov dword [ebp + 0x70], ecx
mov cl, byte [eax]
cmp cl, 4
jne 0x47e6ad
inc dword [ebp + 0x60]
jmp 0x47e6b8
cmp cl, 5
jne 0x47e6c5
inc dword [ebp + 0x60]
inc dword [ebp + 0x68]
mov ecx, dword [eax + 5]
cmp ecx, dword [ebp + 0x74]
jle 0x47e6ef
mov dword [ebp + 0x74], ecx
jmp 0x47e6ef
cmp cl, 3
jne 0x47e6d0
mov byte [ebp + 0x66], 1
jmp 0x47e6ef
cmp cl, 1
jne 0x47e6da
mov byte [ebp + 0x67], cl
jmp 0x47e6ef
cmp cl, 2
jne 0x47e6ef
mov ecx, dword [0x4c9204]
mov ecx, dword [ecx + 4]
mov dword [ebp + 0x4c], ecx
mov byte [ebp + 0x65], 1
add eax, 0x34
dec dword [ebp + 0x70]
jne 0x47e6a1
xor eax, eax
push 0x7e
push eax
mov word [ebp - 0x38], ax
lea eax, [ebp - 0x36]
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
cmp byte [ebp + 0x65], 0
je 0x47e733
xor ecx, ecx
call fcn.004444fe
push dword [0x4cfebc]
push dword [ebp + 0x4c]
push str.__d_____s
call fcn.0043c7dc
add esp, 0xc
mov dword [ebx], eax
jmp 0x47e754
cmp byte [ebp + 0x66], 0
je 0x47e741
mov edx, dword [0x4cfeb8]
jmp 0x47e74d
cmp byte [ebp + 0x67], 0
je 0x47e767
mov edx, dword [0x4cfeb4]
mov ecx, ebx
call fcn.0043ac3d
mov eax, dword [0x4c9204]
mov eax, dword [eax + 0x20]
mov dword [esi + 0xd4], eax
jmp 0x47e829
xor eax, eax
cmp dword [ebp + 0x68], eax
jle 0x47e7ae
xor ecx, ecx
call fcn.004444fe
cmp dword [ebp + 0x68], 1
mov eax, dword [0x4cfeac]
jg 0x47e785
mov eax, dword [0x4cfeb0]
push eax
push dword [ebp + 0x68]
push 0x4a55f8
call fcn.0043c7dc
add esp, 0xc
mov dword [ebx], eax
mov dword [esi + 0xd4], 6
mov dword [esi + 0xd8], 0x2429d3
jmp 0x47e829
mov ecx, dword [ebp + 0x54]
cmp dword [ebp + 0x60], ecx
jne 0x47e7d2
cmp dword [ebp + 0x74], eax
je 0x47e80a
push 0
push dword [ebp + 0x74]
lea ecx, [ebp - 0x38]
push 0x40
pop edx
call fcn.00444719
lea edx, [ebp - 0x38]
mov ecx, ebx
jmp 0x47e81d
cmp dword [ebp + 0x74], eax
je 0x47e80a
push 0
push dword [ebp + 0x74]
lea ecx, [ebp - 0x38]
push 0x40
pop edx
call fcn.00444719
mov ecx, dword [ebx]
call fcn.004444fe
lea eax, [ebp - 0x38]
push eax
push dword [ebp + 0x54]
push dword [ebp + 0x60]
push dword [0x4cfea4]
call fcn.0043c7dc
add esp, 0x10
mov dword [ebx], eax
jmp 0x47e829
mov ecx, edi
call fcn.0041f799
mov ecx, ebx
test al, al
je 0x47e824
mov edx, dword [0x4cfea8]
call fcn.0043ac3d
jmp 0x47e829
call fcn.0043b306
cmp byte [0x4c9438], 0
je 0x47e843
mov ecx, esi
call fcn.00478008
mov eax, dword [eax*4 + 0x4bac00]
mov dword [esi + 0x40], eax
inc dword [ebp + 0x6c]
mov eax, dword [ebp + 0x6c]
cmp eax, dword [0x4c3b58]
jne 0x47e235
mov ecx, dword [0x4c9204]
test ecx, ecx
je 0x47e866
push 0
call fcn.004029e1
push dword [0x4c9b34]
mov esi, dword [ebp + 0x50]
push 1
push 0x1003
push 0x1b
mov ecx, esi
call fcn.0044f195
call fcn.00429561
push dword [ebp + 0x58]
mov ecx, dword [esi + 0xc0]
push dword [esi + 0x5c]
call fcn.0044c3e4
lea esp, [ebp - 0x44]
pop edi
pop esi
pop ebx
add ebp, 0x78
leave
ret