Function at 0x47d976
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 [0x4c3adc]
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 0x47d9ae
push dword [ebp + 0x5c]
mov dword [ecx], eax
push 0
mov ecx, ebx
call fcn.0047d72c
mov ecx, ebx
call fcn.0047ae36
mov ecx, dword [ebx + 0xc0]
call fcn.0044d663
mov eax, dword [ebx + 0xc4]
add eax, 0x24
push eax
mov ecx, 0x4c9b54
call fcn.00470c65
and dword [ebp + 0x58], 0
call fcn.0042957f
mov ecx, dword [0x4c611c]
mov edi, dword [0x4c3b78]
test ecx, ecx
je 0x47da03
mov eax, dword [0x4c6114]
add eax, 0x20
test byte [eax - 0x18], 4
je 0x47d9fd
add edi, dword [eax]
add eax, 0x28
dec ecx
jne 0x47d9f5
mov eax, dword [ebx + 0xc0]
mov eax, dword [eax + 0x14]
cmp eax, edi
je 0x47daed
and dword [ebp + 0x6c], 0
test eax, eax
je 0x47dab8
xor esi, esi
mov eax, dword [ebx + 0x5c]
add eax, esi
cmp dword [eax], 1
jne 0x47da43
mov ecx, dword [eax + 4]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x88]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x80]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x84]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x8c]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0x90]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0xc4]
call fcn.004444cc
mov eax, dword [ebx + 0x5c]
mov ecx, dword [esi + eax + 0xd0]
call fcn.004444cc
inc dword [ebp + 0x6c]
mov eax, dword [ebx + 0xc0]
mov ecx, dword [ebp + 0x6c]
add esi, 0xdc
cmp ecx, dword [eax + 0x14]
jne 0x47da22
push dword [ebx + 0x5c]
call fcn.00444599
xor ecx, ecx
mov eax, edi
mov edx, 0xdc
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00444d13
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 [0x4c611c], 0
je 0x47e0e2
and dword [ebp + 0x54], 0
mov eax, dword [ebp + 0x54]
mov ecx, dword [0x4c6114]
add eax, ecx
test byte [eax + 8], 4
mov dword [ebp + 0x74], eax
je 0x47e0cc
mov ecx, dword [eax + 0x10]
call fcn.004363a7
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x47db25
sub eax, edx
mov dword [ebp + 0x70], eax
cmp byte [0x4c6d08], cl
je 0x47db74
mov eax, dword [0x4c6d0c]
cmp eax, 0xffffffff
je 0x47db74
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47db76
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 [0x4c6d0c]
call ebx
jmp 0x47db7c
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 [0x4c6d08], 0
mov esi, dword [0x4c6d0c]
je 0x47dbca
cmp esi, 0xffffffff
je 0x47dbca
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dbc0
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 [0x4c6d0c]
call ebx
mov eax, esi
mov esi, dword [0x4c6d0c]
jmp 0x47dbcc
xor eax, eax
mov eax, dword [eax + 0x14]
call section..text
cmp byte [0x4c6d08], 0
mov dword [ebp + 0x70], esp
je 0x47dc10
cmp esi, 0xffffffff
je 0x47dc10
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dc12
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 [0x4c6d0c]
call ebx
jmp 0x47dc12
xor esi, esi
mov eax, dword [ebp + 0x70]
mov dword [esi + 0x18], eax
cmp byte [0x4c6d08], 0
mov eax, dword [0x4c6d0c]
je 0x47dc5e
cmp eax, 0xffffffff
je 0x47dc5e
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dc54
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 [0x4c6d0c]
call ebx
mov eax, dword [0x4c6d0c]
mov dword [ebp + 0x6c], esi
jmp 0x47dc62
and dword [ebp + 0x6c], 0
cmp byte [0x4c6d08], 0
je 0x47dc9d
cmp eax, 0xffffffff
je 0x47dc9d
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dc99
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 [0x4c6d0c]
call ebx
mov edi, esi
jmp 0x47dc9f
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.004363a7
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.00435bdc
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
test dx, dx
jne 0x47dccf
sub eax, ecx
sar eax, 1
mov dword [ebp + 0x70], eax
cmp byte [0x4c6d08], dl
je 0x47dd1d
mov eax, dword [0x4c6d0c]
cmp eax, 0xffffffff
je 0x47dd1d
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dd1f
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 [0x4c6d0c]
call ebx
jmp 0x47dd1f
xor esi, esi
mov eax, dword [ebp + 0x70]
inc eax
mov dword [esi + 0x14], eax
cmp byte [0x4c6d08], 0
mov esi, dword [0x4c6d0c]
je 0x47dd6d
cmp esi, 0xffffffff
je 0x47dd6d
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47dd63
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 [0x4c6d0c]
call ebx
mov eax, esi
mov esi, dword [0x4c6d0c]
jmp 0x47dd6f
xor eax, eax
mov eax, dword [eax + 0x14]
add eax, eax
call section..text
cmp byte [0x4c6d08], 0
mov dword [ebp + 0x70], esp
je 0x47ddb5
cmp esi, 0xffffffff
je 0x47ddb5
push esi
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47ddb7
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 [0x4c6d0c]
call ebx
jmp 0x47ddb7
xor esi, esi
mov eax, dword [ebp + 0x70]
mov dword [esi + 0x18], eax
cmp byte [0x4c6d08], 0
mov eax, dword [0x4c6d0c]
je 0x47de02
cmp eax, 0xffffffff
je 0x47de02
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47ddf9
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 [0x4c6d0c]
call ebx
mov eax, dword [0x4c6d0c]
mov ebx, esi
jmp 0x47de04
xor ebx, ebx
cmp byte [0x4c6d08], 0
je 0x47de43
cmp eax, 0xffffffff
je 0x47de43
push eax
call dword [sym.imp.KERNEL32.DLL_TlsGetValue]
mov esi, eax
test esi, esi
jne 0x47de3f
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 [0x4c6d0c]
call dword [sym.imp.KERNEL32.DLL_TlsSetValue]
mov edi, esi
jmp 0x47de45
xor edi, edi
mov eax, dword [ebp + 0x74]
mov ecx, dword [eax + 0x10]
mov esi, dword [ebx + 0x14]
call fcn.00435bdc
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 0x47e0cc
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 [0x4c3b78], ebx
je 0x47df05
mov eax, dword [0x4c3b70]
mov esi, dword [eax + ebx*4]
mov eax, dword [esi + 0x1c8]
test eax, eax
je 0x47defc
cmp dword [esi + 0x1c4], 0
je 0x47defc
cmp dword [esi + 0x1d8], 0
je 0x47defc
push dword [ebp + 0x48]
push eax
call sub.MSVCRT.dll__stricmp
pop ecx
pop ecx
test eax, eax
jne 0x47defc
push dword [edi + 8]
mov eax, dword [esi + 0x1c4]
push eax
call sub.MSVCRT.dll__stricmp
pop ecx
pop ecx
test eax, eax
jne 0x47defc
push dword [edi + 4]
mov esi, dword [esi + 0x1d8]
push esi
call sub.MSVCRT.dll__wcsicmp
pop ecx
pop ecx
test eax, eax
je 0x47e0b6
inc ebx
cmp ebx, dword [0x4c3b78]
jne 0x47de9b
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 0x47df5e
mov eax, dword [edi + 4]
mov edx, ebx
mov cx, word [edx]
cmp cx, word [eax]
jne 0x47df55
test cx, cx
je 0x47df51
mov cx, word [edx + 2]
cmp cx, word [eax + 2]
jne 0x47df55
add edx, 4
add eax, 4
test cx, cx
jne 0x47df2f
xor eax, eax
jmp 0x47df5a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47df76
cmp dword [ebp + 0x4c], 1
jne 0x47df6b
mov ecx, ebx
call fcn.004444cc
mov ecx, dword [edi + 4]
call fcn.00444cbc
mov dword [esi + 4], eax
test byte [edi + 0x24], 2
je 0x47df8e
cmp byte [esi + 0x3d], 0xf
je 0x47dfa9
mov byte [esi + 0x3d], 0xf
mov edx, dword [0x4cff08]
jmp 0x47df9e
cmp byte [esi + 0x3d], 0xe
je 0x47dfa9
mov byte [esi + 0x3d], 0xe
mov edx, dword [0x4cff04]
lea ecx, [esi + 0x84]
call fcn.0043ac1c
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 0x47e009
mov eax, dword [esi + 0x80]
test eax, eax
je 0x47dffa
mov ecx, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x47dff1
test dl, dl
je 0x47dfed
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x47dff1
inc eax
inc eax
inc ecx
inc ecx
test dl, dl
jne 0x47dfd3
xor eax, eax
jmp 0x47dff6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e014
mov edx, ebx
lea ecx, [esi + 0x80]
call fcn.0043ac44
jmp 0x47e014
lea ecx, [esi + 0x80]
call fcn.0043b2e5
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 0x47e088
mov edx, dword [ebp + 0x70]
mov eax, ecx
mov di, word [eax]
cmp di, word [edx]
jne 0x47e07f
test di, di
je 0x47e07b
mov di, word [eax + 2]
cmp di, word [edx + 2]
jne 0x47e07f
add eax, 4
add edx, 4
test di, di
jne 0x47e059
xor eax, eax
jmp 0x47e084
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e0a1
cmp dword [ebp + 0x4c], 1
jne 0x47e093
call fcn.004444cc
mov ecx, dword [ebp + 0x70]
call fcn.00444cbc
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 0x47de88
inc dword [ebp + 0x5c]
mov eax, dword [ebp + 0x5c]
add dword [ebp + 0x54], 0x28
cmp eax, dword [0x4c611c]
jne 0x47db02
mov ecx, dword [0x4c9224]
test ecx, ecx
je 0x47e0f6
push 0x4c9b54
call fcn.00401707
and dword [ebp + 0x6c], 0
cmp dword [0x4c3b78], 0
je 0x47e733
mov eax, dword [ebp + 0x58]
imul eax, eax, 0xdc
mov dword [ebp + 0x5c], eax
mov eax, dword [0x4c3b70]
mov ecx, dword [ebp + 0x6c]
mov edi, dword [eax + ecx*4]
test byte [edi + 0x45], 2
je 0x47e721
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 0x47e192
mov eax, dword [esi + 0x80]
test eax, eax
je 0x47e183
mov ecx, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x47e17a
test dl, dl
je 0x47e176
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x47e17a
inc eax
inc eax
inc ecx
inc ecx
test dl, dl
jne 0x47e15c
xor eax, eax
jmp 0x47e17f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e19d
mov edx, ebx
lea ecx, [esi + 0x80]
call fcn.0043ac44
jmp 0x47e19d
lea ecx, [esi + 0x80]
call fcn.0043b2e5
and dword [esi + 0x7c], 0
cmp dword [ebp + 0x70], 1
jne 0x47e1af
mov ecx, dword [esi + 4]
call fcn.004444cc
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.00405077
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], edx
test byte [edi + 0x44], 0x10
je 0x47e236
mov ecx, edi
call fcn.00406b70
cmp eax, 0xffffffff
je 0x47e236
xor eax, eax
inc eax
jmp 0x47e238
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.0040502d
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 0x47e32b
mov ecx, dword [0x4c3a38]
push eax
call fcn.00402f35
mov ebx, eax
test ebx, ebx
je 0x47e32b
mov ecx, dword [ebx + 0x44]
call fcn.0043ad91
mov ecx, eax
call fcn.0043aff3
lea ecx, [esi + 0xc4]
mov edx, eax
call fcn.0043ac1c
mov eax, dword [ebx + 0x38]
mov dword [esi + 0xc8], eax
jmp 0x47e336
lea ecx, [esi + 0xc4]
call fcn.0043b2e5
mov ecx, edi
call fcn.00404fb4
mov word [esi + 0x3a], ax
push 7
lea eax, [esi + 0x48]
push eax
mov ecx, edi
call fcn.00406ee9
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x50]
cmp eax, edx
jbe 0x47e36b
mov ecx, eax
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x54]
sub ecx, edx
cmp eax, ecx
jb 0x47e36b
sub eax, ecx
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0x54]
cmp ecx, eax
jbe 0x47e377
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.0040750f
mov dword [esi + 0x68], eax
mov al, byte [edi + 0x3c]
lea ebx, [esi + 0x84]
mov ecx, ebx
mov byte [esi + 0x3c], al
call fcn.0043b2e5
push ebx
lea eax, [esi + 0x3d]
push eax
mov ecx, edi
call fcn.0040630e
mov dword [esi + 0x40], 0xff5050
test byte [edi + 0x43], 0x10
je 0x47e3cd
test byte [esi + 0x3c], 0x41
je 0x47e3cd
xor eax, eax
inc eax
jmp 0x47e3cf
xor eax, eax
cmp dword [ebp + 0x70], 1
mov byte [esi + 0x45], al
mov eax, dword [edi + 0x50]
mov dword [esi + 0xbc], eax
jne 0x47e3ec
mov ecx, dword [esi + 0x88]
call fcn.004444cc
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 0x47e452
mov eax, dword [edi + 0x80]
mov eax, dword [eax + ebx*4]
test byte [eax + 0x3a], 2
jne 0x47e449
mov ecx, dword [eax + 0x10]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov byte [esi + 0x44], 0
cmp byte [0x4c9301], 0
mov dword [ebp + 0x68], eax
jne 0x47e452
mov ecx, eax
call fcn.00443566
test al, al
je 0x47e452
inc ebx
cmp ebx, dword [edi + 0x88]
jne 0x47e417
cmp dword [edi + 0x78], 0
jbe 0x47e462
test byte [edi + 0x46], 2
jne 0x47e462
mov byte [esi + 0x44], 0
mov edx, dword [ebp + 0x68]
test edx, edx
je 0x47e4b0
lea ebx, [esi + 0x8c]
mov eax, dword [ebx]
test eax, eax
je 0x47e4a4
mov cx, word [eax]
cmp cx, word [edx]
jne 0x47e49b
test cx, cx
je 0x47e497
mov cx, word [eax + 2]
cmp cx, word [edx + 2]
jne 0x47e49b
add eax, 4
add edx, 4
test cx, cx
jne 0x47e475
xor eax, eax
jmp 0x47e4a0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x47e4bb
mov edx, dword [ebp + 0x68]
mov ecx, ebx
call fcn.0043ac1c
jmp 0x47e4bb
lea ecx, [esi + 0x8c]
call fcn.0043b2e5
lea ebx, [esi + 0x90]
mov ecx, ebx
call fcn.0043b2e5
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 0x47e4f8
movzx eax, byte [0x4c9301]
push eax
push 0
lea eax, [ebp + 0x48]
push eax
push ebx
xor edx, edx
mov ecx, edi
call fcn.004153e2
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 0x47e533
test byte [edi + 0x208], 1
jne 0x47e527
mov ecx, edi
call fcn.00407010
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 [0x4c9224], eax
je 0x47e707
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 0x47e5d5
mov eax, dword [edi]
add eax, 0x23
mov dword [ebp + 0x70], ecx
mov cl, byte [eax]
cmp cl, 4
jne 0x47e58b
inc dword [ebp + 0x60]
jmp 0x47e596
cmp cl, 5
jne 0x47e5a3
inc dword [ebp + 0x60]
inc dword [ebp + 0x68]
mov ecx, dword [eax + 5]
cmp ecx, dword [ebp + 0x74]
jle 0x47e5cd
mov dword [ebp + 0x74], ecx
jmp 0x47e5cd
cmp cl, 3
jne 0x47e5ae
mov byte [ebp + 0x66], 1
jmp 0x47e5cd
cmp cl, 1
jne 0x47e5b8
mov byte [ebp + 0x67], cl
jmp 0x47e5cd
cmp cl, 2
jne 0x47e5cd
mov ecx, dword [0x4c9224]
mov ecx, dword [ecx + 4]
mov dword [ebp + 0x4c], ecx
mov byte [ebp + 0x65], 1
add eax, 0x34
dec dword [ebp + 0x70]
jne 0x47e57f
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 0x47e611
xor ecx, ecx
call fcn.004444cc
push dword [0x4cfed8]
push dword [ebp + 0x4c]
push str.__d_____s
call fcn.0043c7bb
add esp, 0xc
mov dword [ebx], eax
jmp 0x47e632
cmp byte [ebp + 0x66], 0
je 0x47e61f
mov edx, dword [0x4cfed4]
jmp 0x47e62b
cmp byte [ebp + 0x67], 0
je 0x47e645
mov edx, dword [0x4cfed0]
mov ecx, ebx
call fcn.0043ac1c
mov eax, dword [0x4c9224]
mov eax, dword [eax + 0x20]
mov dword [esi + 0xd4], eax
jmp 0x47e707
xor eax, eax
cmp dword [ebp + 0x68], eax
jle 0x47e68c
xor ecx, ecx
call fcn.004444cc
cmp dword [ebp + 0x68], 1
mov eax, dword [0x4cfec8]
jg 0x47e663
mov eax, dword [0x4cfecc]
push eax
push dword [ebp + 0x68]
push 0x4a55f8
call fcn.0043c7bb
add esp, 0xc
mov dword [ebx], eax
mov dword [esi + 0xd4], 6
mov dword [esi + 0xd8], 0x2429d3
jmp 0x47e707
mov ecx, dword [ebp + 0x54]
cmp dword [ebp + 0x60], ecx
jne 0x47e6b0
cmp dword [ebp + 0x74], eax
je 0x47e6e8
push 0
push dword [ebp + 0x74]
lea ecx, [ebp - 0x38]
push 0x40
pop edx
call fcn.004446e7
lea edx, [ebp - 0x38]
mov ecx, ebx
jmp 0x47e6fb
cmp dword [ebp + 0x74], eax
je 0x47e6e8
push 0
push dword [ebp + 0x74]
lea ecx, [ebp - 0x38]
push 0x40
pop edx
call fcn.004446e7
mov ecx, dword [ebx]
call fcn.004444cc
lea eax, [ebp - 0x38]
push eax
push dword [ebp + 0x54]
push dword [ebp + 0x60]
push dword [0x4cfec0]
call fcn.0043c7bb
add esp, 0x10
mov dword [ebx], eax
jmp 0x47e707
mov ecx, edi
call fcn.0041f7bd
mov ecx, ebx
test al, al
je 0x47e702
mov edx, dword [0x4cfec4]
call fcn.0043ac1c
jmp 0x47e707
call fcn.0043b2e5
cmp byte [0x4c9458], 0
je 0x47e721
mov ecx, esi
call fcn.00477f17
mov eax, dword [eax*4 + 0x4babf8]
mov dword [esi + 0x40], eax
inc dword [ebp + 0x6c]
mov eax, dword [ebp + 0x6c]
cmp eax, dword [0x4c3b78]
jne 0x47e113
mov ecx, dword [0x4c9224]
test ecx, ecx
je 0x47e744
push 0
call fcn.00402987
push dword [0x4c9b54]
mov esi, dword [ebp + 0x50]
push 1
push 0x1003
push 0x1b
mov ecx, esi
call fcn.0044f19f
call fcn.00429590
push dword [ebp + 0x58]
mov ecx, dword [esi + 0xc0]
push dword [esi + 0x5c]
call fcn.0044c3cf
lea esp, [ebp - 0x44]
pop edi
pop esi
pop ebx
add ebp, 0x78
leave
ret