Function at 0x439870
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, eax
push edi
push esi
push ebx
sub esp, 0x8c
mov dword [esp + 0x34], edx
mov byte [ebp + 0xec], 0
mov byte [ebp + 0xb], 0
mov byte [ebp + 0x6c], 1
movzx edx, word [edx + 0x14]
mov dword [esp + 0x40], ecx
mov eax, edx
shr ax, 6
mov ecx, eax
and cx, 0x84
cmp cx, 4
je 0x439a23
test al, 4
jne 0x4399d8
mov esi, dword [esp + 0x34]
xor edi, edi
mov esi, dword [esi + 0x18]
test byte [esi + 0x14], 1
mov dword [esp + 0x38], esi
jne 0x439a61
mov esi, dword [esp + 0x34]
mov ecx, eax
or ecx, 0x20
shl ecx, 6
movzx edx, word [esi + 0x14]
and edx, 0x3f
or edx, ecx
test al, 0x80
mov word [esi + 0x14], dx
jne 0x439912
or al, 0xa0
and edx, 0x3f
shl eax, 6
or edx, eax
mov word [esi + 0x14], dx
mov eax, dword [ebp + 0x214]
test eax, eax
je 0x439912
mov edx, dword [ebp + 0x20]
mov dword [esp + 8], esi
mov dword [esp], ebp
mov dword [esp + 4], edx
call eax
mov eax, dword [ebp + 0x220]
test eax, eax
je 0x439934
mov esi, dword [esp + 0x34]
mov dword [esp], ebp
mov dword [esp + 8], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 4], esi
call eax
mov esi, dword [esp + 0x38]
movzx eax, byte [esi + 0x14]
or eax, 8
cmp word [esi + 0x10], 0
mov byte [esi + 0x14], al
je 0x439b47
test edi, edi
je 0x439c65
cmp byte [ebp + 8], 0
je 0x439c2b
lea eax, [ebp + 0x4c]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ebp
jmp 0x439972
mov edi, esi
mov eax, dword [esp + 0x24]
mov ebp, dword [edi + 4]
mov esi, dword [edi]
mov ebx, dword [edi + 8]
mov dword [edi], 0
call fcn.00438780
sub ebx, ebp
sar ebx, 2
lea edx, [ebp + ebx*4]
mov dword [eax + 0x18], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], edi
mov dword [eax + 8], ebp
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x26d], 0
jne 0x4399bc
add dword [0x4d928c], ebx
test esi, esi
jne 0x439970
mov ebp, dword [esp + 0x20]
mov eax, 2
mov byte [ebp + 0x6c], 0
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 0x68]
mov byte [ebp + 0x6c], 0
test byte [eax + 0x15], 1
je 0x439a08
mov eax, dword [ebp + 0x64]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x34]
mov dword [esp], eax
mov eax, ebp
call fcn.00439270
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [eax + 0x18]
test byte [eax + 0x14], 1
je 0x4399e5
mov eax, dword [ebp + 0xf0]
mov eax, dword [eax - 0x10]
mov dword [esp + 0xa0], eax
jmp 0x4399e8
or al, 0x80
and edx, 0x3f
shl eax, 6
or edx, eax
mov eax, dword [esp + 0x34]
mov word [eax + 0x14], dx
mov eax, dword [ebp + 0x228]
test eax, eax
je 0x439a97
mov edi, dword [esp + 0x34]
mov dword [esp], ebp
mov dword [esp + 4], edi
call eax
test al, al
je 0x439a97
mov eax, dword [esp + 0x34]
movzx eax, word [eax + 0x14]
shr ax, 6
jmp 0x4398ae
add byte [ebp + 0x10], 1
xor ebx, ebx
add dword [ebp + 0x10c], 1
mov byte [ebp + 0x11], 1
mov dword [esp], ebp
call fcn.0043b4a0
movzx edx, byte [eax + 4]
cmp dl, 0x53
jne 0x439ac6
test ebx, ebx
je 0x439ac2
test byte [ebx + 6], 1
jne 0x439a72
mov edx, dword [eax + 8]
test edx, edx
cmove ebx, eax
jmp 0x439a72
mov eax, dword [ebp + 0x214]
test eax, eax
je 0x439a50
mov edx, dword [ebp + 0x20]
mov esi, dword [esp + 0x34]
mov dword [esp], ebp
mov dword [esp + 4], edx
mov dword [esp + 8], esi
call eax
movzx eax, word [esi + 0x14]
shr ax, 6
jmp 0x4398ae
mov ebx, eax
jmp 0x439a72
cmp dl, 0x14
je 0x439cc9
cmp dl, 0x16
jne 0x439ade
lea edx, [ebp + 0x170]
cmp eax, edx
jne 0x439b0e
mov dword [esp + 4], 1
mov dword [esp], ebp
call fcn.00439600
test ebx, ebx
je 0x439b0e
mov dword [esp + 0xc], 1
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], ebp
call fcn.00439200
sub dword [ebp + 0x10c], 1
xor edi, edi
sub byte [ebp + 0x10], 1
mov byte [ebp + 0x11], 0
cmp byte [ebp + 0x25a], 0
jne 0x439c91
test edi, edi
je 0x439b3c
mov dword [esp + 4], edi
mov dword [esp], ebp
call fcn.0043ed80
mov byte [ebp + 0x6c], 0
xor eax, eax
jmp 0x4399fd
test al, 0x20
jne 0x43adf8
mov eax, dword [esp + 0x38]
mov esi, dword [eax + 0xc]
mov ebx, dword [eax + 4]
mov dword [esp + 0x24], esi
cmp byte [ebp + 0x26d], 0
je 0x439c73
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x7c]
mov eax, ebp
mov dword [esp + 0x7c], 0
mov edx, esi
call fcn.00438740
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0xc], esi
xor esi, esi
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0042b950
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x439bf7
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x28], edi
mov edi, eax
mov eax, dword [ebx]
mov ecx, ebx
add ebx, 0x10
mov edx, dword [esp + 0x7c]
mov dword [esp + 0xc], esi
add esi, 1
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.004388a0
cmp esi, ebp
jne 0x439bc5
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x34]
mov eax, dword [ecx + 4]
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
mov eax, ebp
call fcn.00438820
mov eax, dword [esp + 0x24]
add dword [0x4d928c], eax
jmp 0x43994d
mov dword [esp], ebp
call fcn.0043e390
mov esi, dword [esp + 0x40]
xor edx, edx
mov byte [eax + 4], 0x53
mov dword [eax + 8], esi
mov word [eax + 6], dx
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], ebp
call fcn.00439200
jmp 0x43995f
mov byte [ebp + 0x6c], 0
mov eax, 1
jmp 0x4399fd
mov eax, dword [esp + 0x24]
mov dword [esp + 8], ebx
mov dword [esp], ebp
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 4], eax
call fcn.00439200
jmp 0x439c1c
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x18]
test byte [eax + 0x14], 4
jne 0x439b2c
mov eax, dword [esp + 0x34]
mov eax, dword [eax]
mov dword [esp + 8], str.function_like_macro___s__must_be_used_with_arguments_in_traditional_C
mov dword [esp + 4], 6
mov dword [esp], ebp
mov dword [esp + 0xc], eax
call fcn.0043c690
jmp 0x439b2c
mov eax, dword [esp + 0x34]
mov byte [ebp + 0x11], 2
cmp byte [ebp + 0x26d], 0
mov eax, dword [eax + 0x18]
setne byte [esp + 0x28]
movzx ebx, word [eax + 0x10]
mov dword [esp + 0x3c], eax
test bx, bx
je 0x43aaa9
imul eax, ebx, 0xe4
imul ebx, ebx, 0x1c
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.0043edb0
mov edi, eax
mov dword [esp + 0x58], eax
mov eax, dword [eax + 4]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov esi, eax
mov dword [esp], eax
mov dword [esp + 0x54], eax
call sub.msvcrt.dll_memset
mov eax, esi
add eax, ebx
lea ecx, [ebp + 0x170]
mov dword [edi + 8], eax
mov dword [esp + 0x24], edi
xor edi, edi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], 0
lea esi, [esi]
mov esi, dword [esp + 0x48]
add dword [esp + 0x44], 1
cmp byte [esp + 0x28], 0
mov dword [esi], eax
jne 0x43a04f
mov dword [esp + 0x20], 2
mov ecx, dword [esp + 0x20]
xor ebx, ebx
mov dword [esp + 0x2c], 0x32
mov esi, dword [esp + 0x48]
mov dword [esp + 0x30], 0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x24]
cmp dword [ecx + 0xc], eax
jb 0x439e3c
cmp byte [esp + 0x28], 0
je 0x439dad
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x20], eax
ja 0x439e86
lea edx, [esp + 0x7c]
mov eax, ebp
call fcn.0043af10
mov edx, eax
movzx eax, byte [eax + 4]
cmp al, 0x53
je 0x439e60
cmp al, 0x14
je 0x439e68
cmp al, 0x15
je 0x439e70
cmp al, 0x13
je 0x439eb0
cmp al, 0x16
je 0x439ed8
cmp al, 0x25
je 0x439f86
cmp al, 0x51
je 0x439f95
xor eax, eax
mov ecx, dword [esp + 0x7c]
cmp byte [ebp + 0x26d], 0
mov dword [esp], ebx
mov dword [esp + 4], 0
setne al
add ebx, 1
mov dword [esp + 8], eax
mov eax, esi
call fcn.004386c0
lea eax, [ebx + 2]
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov ecx, dword [esp + 0x20]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x24]
cmp dword [ecx + 0xc], eax
jae 0x439d98
mov dword [esp + 8], 0xfa0
mov dword [esp + 4], ecx
mov dword [esp], ebp
call fcn.0043ee50
mov dword [esp + 0x24], eax
mov eax, dword [eax + 8]
mov dword [esi], eax
jmp 0x439d98
test ebx, ebx
jne 0x439df6
mov eax, dword [esi]
jmp 0x439e28
add dword [esp + 0x30], 1
jmp 0x439df6
mov ecx, dword [esp + 0x30]
mov eax, ecx
sub eax, 1
test ecx, ecx
je 0x439ed8
mov dword [esp + 0x30], eax
jmp 0x439df6
add dword [esp + 0x2c], 0x3e8
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 0x14]
lea edx, [ecx*4]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00452a70
mov dword [esi + 0x14], eax
jmp 0x439dad
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x439df6
mov eax, dword [esp + 0x3c]
test byte [eax + 0x14], 2
je 0x439ed8
mov eax, dword [esp + 0x3c]
movzx eax, word [eax + 0x10]
cmp dword [esp + 0x44], eax
je 0x439df6
mov esi, edx
test ebx, ebx
je 0x439eff
mov eax, dword [esp + 0x48]
mov edx, dword [eax]
mov eax, dword [edx + ebx*4 - 4]
cmp byte [eax + 4], 0x53
je 0x439efa
jmp 0x439eff
mov eax, dword [edx + ebx*4 - 4]
cmp byte [eax + 4], 0x53
jne 0x439eff
sub ebx, 1
jne 0x439ef0
mov eax, dword [esp + 0x48]
mov ecx, dword [ebp + 0x170]
mov edx, dword [esp + 0x50]
mov dword [eax + 0xc], ebx
xor eax, eax
cmp byte [ebp + 0x26d], 0
mov dword [esp + 4], 0
mov dword [esp], ebx
setne al
mov dword [esp + 8], eax
mov eax, dword [esp + 0x48]
call fcn.004386c0
mov eax, dword [esp + 0x3c]
movzx edx, word [eax + 0x10]
movzx eax, dx
cmp dword [esp + 0x44], eax
ja 0x439f6a
mov ecx, dword [esp + 0x48]
mov ecx, dword [ecx]
lea ecx, [ecx + ebx*4 + 4]
mov ebx, dword [esp + 0x24]
mov dword [ebx + 8], ecx
mov ebx, dword [esp + 0x48]
mov ecx, ebx
add ecx, 0x1c
cmp dword [esp + 0x44], eax
cmove ecx, ebx
mov dword [esp + 0x48], ecx
movzx eax, byte [esi + 4]
lea ecx, [eax - 0x15]
cmp cl, 1
jbe 0x43a069
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
jmp 0x439d50
test byte [edx + 6], 0x40
je 0x439df6
jmp 0x439ed8
mov dword [esp], ebp
mov dword [esp + 0x4c], edx
call fcn.0043e390
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x4c], ebx
mov ecx, eax
mov eax, dword [edx]
mov ebx, ecx
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x43a009
mov edx, dword [edi + 8]
mov eax, dword [edi + 0xc]
sub eax, edx
cmp eax, 3
ja 0x439fea
sub edx, dword [edi + 4]
mov dword [esp], ebp
add edx, edx
mov dword [esp + 4], edx
call fcn.0043edb0
mov edx, dword [eax + 8]
mov dword [eax], edi
mov edi, eax
mov dword [edx], ebx
add dword [edi + 8], 4
cmp byte [ebx + 4], 0x52
je 0x43a030
lea edx, [esp + 0x7c]
mov eax, ebp
call fcn.0043af10
cmp byte [eax + 4], 0x16
mov ebx, eax
je 0x43a030
test edi, edi
jne 0x439fc5
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], ebp
call fcn.0043edb0
mov edx, dword [eax + 8]
mov edi, eax
mov dword [edx], ebx
add dword [edi + 8], 4
cmp byte [ebx + 4], 0x52
jne 0x439ff6
nop
mov ecx, ebx
mov ebx, dword [esp + 0x4c]
mov byte [ebp + 0x11], 2
mov byte [ebp + 0x10], 1
cmp byte [ecx + 4], 0x16
jne 0x439e26
mov esi, ecx
jmp 0x439eda
mov dword [esp], 0xc8
call fcn.004529f0
mov esi, dword [esp + 0x48]
mov dword [esi + 0x14], eax
mov eax, dword [esi]
jmp 0x439d66
mov esi, dword [esp + 0x44]
cmp al, 0x16
mov dword [esp + 0x5c], esi
je 0x43abe5
cmp dword [esp + 0x44], 1
je 0x43abb8
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x3c]
mov dword [esp], ebp
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
call fcn.00439110
test al, al
je 0x43ac25
test byte [esi + 0x14], 2
je 0x43a0cf
mov eax, dword [esp + 0x3c]
movzx eax, word [eax + 0x10]
cmp dword [esp + 0x44], eax
jb 0x43aba4
cmp dword [esp + 0x44], 1
je 0x43ab88
mov eax, dword [esp + 0x38]
sub byte [ebp + 0x10], 1
sub dword [ebp + 0x10c], 1
mov byte [ebp + 0x11], 0
cmp word [eax + 0x10], 0
jne 0x43a175
mov eax, dword [esp + 0x58]
xor ebx, ebx
mov esi, dword [eax + 4]
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x43a158
mov dword [esp + 0x20], edi
mov edi, esi
mov esi, dword [esp + 0x5c]
mov edx, dword [edi + 4]
test edx, edx
je 0x43a11e
mov dword [esp], edx
call sub.msvcrt.dll_free
mov dword [edi + 4], 0
mov edx, dword [edi + 0x14]
test edx, edx
je 0x43a134
mov dword [esp], edx
call sub.msvcrt.dll_free
mov dword [edi + 0x14], 0
mov edx, dword [edi + 0x18]
test edx, edx
je 0x43a14a
mov dword [esp], edx
call sub.msvcrt.dll_free
mov dword [edi + 0x18], 0
add ebx, 1
add edi, 0x1c
cmp ebx, esi
jne 0x43a108
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.0043efc0
mov eax, dword [esp + 0x34]
movzx eax, word [eax + 0x14]
shr ax, 6
jmp 0x4398cd
mov eax, dword [esp + 0x58]
mov dword [esp + 0x78], 0
mov eax, dword [eax + 4]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x38]
test byte [eax + 0x14], 0x20
jne 0x43adb8
mov esi, dword [esp + 0x38]
mov eax, dword [esi + 0xc]
mov edx, eax
mov dword [esp + 0x20], eax
mov eax, dword [esi + 4]
shl edx, 4
lea esi, [eax + edx]
mov dword [esp + 0x2c], esi
cmp dword [esp + 0x2c], eax
jbe 0x43abd8
mov esi, dword [esp + 0x20]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], esi
mov esi, eax
lea eax, [ebp + 0x4c]
mov dword [esp + 0x50], eax
lea eax, [ebp + 0x28]
mov dword [esp + 0x48], eax
jmp 0x43a1ed
add esi, 0x10
cmp esi, dword [esp + 0x2c]
jae 0x43a457
cmp byte [esi + 4], 0x50
jne 0x43a1e0
imul eax, dword [esi + 8], 0x1c
mov edi, dword [esp + 0x60]
add dword [esp + 0x20], 2
add dword [esp + 0x28], 2
lea ebp, [edi + eax - 0x1c]
movzx eax, word [esi + 6]
test al, 4
je 0x43a411
mov eax, dword [ebp + 8]
test eax, eax
jne 0x43a1e0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x28]
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
sub edx, eax
cmp edx, 2
ja 0x43a252
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x24]
mov dword [esp + 8], 3
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.0043ef60
mov eax, dword [edi + 0x28]
mov eax, dword [eax + 8]
mov byte [eax], 0x22
mov edi, dword [ebp + 0xc]
lea ebx, [eax + 1]
test edi, edi
je 0x43a3bd
mov dword [esp + 0x3c], 0
xor edi, edi
mov dword [esp + 0x30], 0
mov dword [esp + 0x54], esi
mov eax, dword [ebp]
mov esi, dword [esp + 0x30]
mov esi, dword [eax + esi*4]
movzx eax, byte [esi + 4]
cmp al, 0x53
je 0x43aa19
lea edx, [eax - 0x3e]
cmp dl, 4
jbe 0x43a2af
lea edx, [eax - 0x38]
cmp dl, 4
jbe 0x43a2af
mov dword [esp], eax
call fcn.004437e0
test al, al
je 0x43ad8f
mov dword [esp], esi
call fcn.0043e4c0
mov dword [esp + 0x44], 1
shl eax, 2
lea edx, [eax + 3]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x28]
mov eax, dword [ecx + 0xc]
sub eax, ebx
cmp edx, eax
ja 0x43aa3d
mov eax, dword [ecx + 8]
lea ecx, [ebx - 1]
cmp eax, ecx
je 0x43a2f4
test edi, edi
cmove edi, esi
test byte [edi + 6], 1
je 0x43a2f4
mov byte [ebx], 0x20
add ebx, 1
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x43a9f6
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0043edb0
mov edi, dword [eax + 8]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], 1
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp], eax
call fcn.0043e560
mov ecx, dword [esp + 0x44]
mov edx, eax
cmp edi, edx
je 0x43a35d
add edi, 1
movzx eax, byte [edi - 1]
cmp al, 0x22
je 0x43a350
cmp al, 0x5c
jne 0x43a407
mov byte [ebx], 0x5c
add ebx, 2
mov byte [ebx - 1], al
cmp edi, edx
jne 0x43a33d
mov eax, dword [esp + 0x24]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0043ed80
cmp byte [esi + 4], 0x3d
je 0x43aa71
xor edi, edi
mov dword [esp + 0x3c], 0
add dword [esp + 0x30], 1
mov eax, dword [esp + 0x30]
cmp eax, dword [ebp + 0xc]
jb 0x43a279
test byte [esp + 0x3c], 1
mov esi, dword [esp + 0x54]
je 0x43a3bd
mov eax, dword [esp + 0x24]
sub ebx, 1
mov dword [esp + 8], str.invalid_string_literal__ignoring_final_
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0043c650
mov eax, dword [esp + 0x24]
lea edx, [ebx + 2]
mov byte [ebx], 0x22
lea ecx, [ebx + 1]
mov edi, ecx
mov eax, dword [eax + 0x28]
sub edi, dword [eax + 8]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x24]
sub ecx, edi
mov dword [esp + 0x30], ecx
mov dword [esp], eax
call fcn.0043e390
mov ecx, dword [esp + 0x30]
xor edx, edx
mov byte [ebx + 1], 0
mov byte [eax + 4], 0x3e
mov dword [eax + 8], edi
mov dword [eax + 0xc], ecx
mov word [eax + 6], dx
mov dword [ebp + 8], eax
jmp 0x43a1e0
mov byte [ebx], al
add ebx, 1
jmp 0x43a339
test al, 8
jne 0x43a443
mov eax, dword [esp + 0x38]
cmp esi, dword [eax + 4]
jbe 0x43a424
test byte [esi - 0xa], 8
jne 0x43a443
mov eax, dword [ebp + 4]
test eax, eax
je 0x43ac49
mov edi, dword [esp + 0x20]
mov eax, dword [ebp + 0x10]
lea eax, [edi + eax - 1]
mov dword [esp + 0x20], eax
jmp 0x43a1e0
mov edi, dword [esp + 0x20]
mov eax, dword [ebp + 0xc]
lea eax, [edi + eax - 1]
mov dword [esp + 0x20], eax
jmp 0x43a1e0
mov edi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
movzx eax, byte [ebp + 0x26d]
test eax, eax
mov dword [esp + 0x50], eax
je 0x43a911
mov esi, dword [esp + 0x20]
lea ecx, [esp + 0x78]
mov eax, ebp
mov edx, esi
call fcn.00438740
mov edx, esi
mov esi, dword [esp + 0xa0]
cmp dword [esp + 0x50], 1
cmove edx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x64], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x34]
mov dword [esp + 0xc], edx
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.0042b950
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x20], 0
mov eax, dword [eax + 4]
mov esi, eax
cmp esi, dword [esp + 0x2c]
lea eax, [ebp + 0x160]
mov dword [esp + 0x68], eax
jae 0x43a7db
mov dword [esp + 0x6c], edi
jmp 0x43a537
cmp byte [ebp + 0x26d], 1
mov edx, dword [esp + 0x20]
jbe 0x43a660
mov eax, dword [esi]
mov ecx, esi
mov edi, dword [esp + 0x30]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 4], eax
mov dword [esp], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], edi
call fcn.004388a0
add dword [esp + 0x20], 1
add esi, 0x10
cmp esi, dword [esp + 0x2c]
jae 0x43a7d7
cmp byte [esi + 4], 0x50
jne 0x43a4f0
movzx edx, word [esi + 6]
imul eax, dword [esi + 8], 0x1c
mov edi, dword [esp + 0x60]
test dl, 4
lea eax, [edi + eax - 0x1c]
je 0x43a79a
cmp byte [ebp + 0x26d], 0
lea edi, [eax + 8]
setne byte [esp + 0x28]
jne 0x43a96b
mov dword [esp + 0x4c], 0
mov ebx, 1
mov dword [esp + 0x48], 1
mov dword [esp + 0x54], 0
cmp byte [ebp + 8], 0
je 0x43a594
cmp byte [ebp + 9], 0
je 0x43a5a7
mov eax, dword [esp + 0x38]
cmp esi, dword [eax + 4]
je 0x43a5a7
test byte [esi - 0xa], 8
je 0x43a8c2
test ebx, ebx
je 0x43a6f6
mov eax, ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x4c], ebp
add eax, ebx
mov dword [esp + 0x44], eax
jmp 0x43a610
xor ecx, ecx
test edi, edi
mov ebp, dword [esi]
je 0x43a5da
mov ecx, dword [edi]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x78]
mov dword [esp], ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
call fcn.004388a0
mov eax, dword [esp + 0x48]
test eax, eax
je 0x43a640
cmp eax, 2
je 0x43a640
add ebx, 1
cmp ebx, dword [esp + 0x44]
je 0x43a671
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x4c]
cmp dword [esp + 0x50], 2
cmovge eax, ebx
cmp byte [ecx + 0x26d], 1
jbe 0x43a650
mov ecx, dword [esp + 0x3c]
cmp byte [esp + 0x28], 0
mov edx, dword [ecx]
jne 0x43a5d0
mov ecx, dword [edi]
mov ebp, dword [ecx]
jmp 0x43a5da
add edi, 4
cmp byte [esp + 0x28], 0
lea eax, [esi + 4]
cmovne esi, eax
jmp 0x43a607
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
sub eax, dword [ecx + 4]
sar eax, 4
jmp 0x43a629
mov eax, dword [esp + 0x38]
mov edx, esi
sub edx, dword [eax + 4]
sar edx, 4
jmp 0x43a501
mov esi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x4c]
test byte [esi + 6], 8
je 0x43a691
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
sub eax, 4
mov dword [esp + 0x54], eax
cmp byte [ebp + 8], 0
jne 0x43a6a1
test byte [esi + 6], 8
je 0x43a993
mov edi, dword [esp + 0x54]
test edi, edi
je 0x43a6e9
mov dword [esp], ebp
call fcn.0043e390
mov edx, dword [edi]
movzx edx, byte [edx + 4]
mov byte [eax + 4], dl
mov edx, dword [edi]
mov edi, dword [esp + 0x54]
mov ecx, dword [edx + 8]
mov ebx, dword [edx + 0xc]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ebx
mov edx, dword [edi]
test byte [esi + 6], 8
movzx edx, word [edx + 6]
je 0x43a832
or edx, 8
mov word [eax + 6], dx
mov edi, dword [esp + 0x54]
mov dword [edi], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], eax
jmp 0x43a52a
cmp byte [ebp + 0x26a], 0
je 0x43a727
cmp byte [ebp + 0x268], 0
jne 0x43a727
mov eax, dword [esp + 0x38]
test byte [eax + 0x14], 4
jne 0x43a727
mov eax, dword [ebp]
test eax, eax
je 0x43ab01
cmp byte [eax + 0x3d], 0
je 0x43ab01
cmp byte [ebp + 0x28a], 0
jle 0x43a78d
mov eax, dword [esp + 0x20]
cmp byte [ebp + 0x248], 0
mov dword [esp + 0x44], eax
jne 0x43a691
mov eax, dword [esp + 0x38]
test byte [eax + 0x14], 4
jne 0x43a691
mov eax, dword [ebp]
test eax, eax
je 0x43a764
cmp byte [eax + 0x3d], 0
jne 0x43a691
mov eax, dword [esp + 0x34]
mov edx, dword [esi + 8]
mov eax, dword [eax]
mov dword [esp + 0x10], edx
mov dword [esp + 8], str.invoking_macro__s_argument__d:_empty_macro_arguments_are_undefined_in_ISO_C90
mov dword [esp + 4], 0x16
mov dword [esp + 0xc], eax
mov dword [esp], ebp
call fcn.0043c690
mov eax, dword [esp + 0x20]
mov dword [esp + 0x44], eax
jmp 0x43a691
and edx, 8
je 0x43a83e
cmp byte [ebp + 0x26d], 0
mov ebx, dword [eax + 0xc]
mov edi, dword [eax]
setne byte [esp + 0x28]
jne 0x43aa89
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], 0
jmp 0x43a588
mov edi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x50]
test ebx, ebx
jne 0x43a9c6
mov esi, dword [esp + 0x24]
lea eax, [ebp + 0x4c]
mov ebx, dword [esi + 8]
sub ebx, dword [esi + 4]
call fcn.00438780
mov ecx, dword [esp + 0x34]
shr ebx, 2
mov dword [eax + 0x10], esi
mov esi, dword [esp + 0x64]
mov dword [eax + 0x18], 0
mov dword [eax + 0x14], ecx
lea edx, [esi + ebx*4]
mov dword [eax + 8], esi
mov dword [eax + 0xc], edx
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 8]
sub eax, dword [esi + 4]
shr eax, 2
add dword [0x4d928c], eax
jmp 0x43a0ed
and edx, 0xfffffff7
mov word [eax + 6], dx
jmp 0x43a6e3
mov edi, dword [esp + 0x38]
cmp esi, dword [edi + 4]
je 0x43a936
test byte [esi - 0xa], 8
je 0x43a936
cmp byte [ebp + 0x26d], 0
mov ebx, dword [eax + 0xc]
mov edi, dword [eax]
setne cl
test cl, cl
mov byte [esp + 0x28], cl
mov dword [esp + 0x4c], 0
je 0x43a87f
xor edx, edx
call fcn.00438710
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esp + 0x3c], ecx
mov edx, eax
sub edx, ecx
cmp edx, 3
jbe 0x43aab8
mov ecx, dword [eax - 4]
lea edx, [eax - 4]
mov dword [esp + 0x54], edx
cmp byte [ecx + 4], 0x13
je 0x43ad30
xor eax, eax
test ebx, ebx
cmovne edx, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x54], edx
jmp 0x43a588
mov dword [esp], ebp
call fcn.0043e390
xor edx, edx
mov word [eax + 6], dx
mov edx, dword [esp + 0x20]
mov byte [eax + 4], 0x53
mov dword [eax + 8], esi
cmp byte [ebp + 0x26d], 1
jbe 0x43aaf0
mov ecx, dword [eax]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x78]
mov dword [esp], ecx
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.004388a0
jmp 0x43a5a7
mov edx, dword [esp + 0x20]
xor ecx, ecx
mov eax, ebp
call fcn.00438740
mov dword [esp + 0x30], 0
mov dword [esp + 0x24], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x64], eax
jmp 0x43a4c0
cmp byte [ebp + 0x26d], 0
mov ebx, dword [eax + 0x10]
mov edi, dword [eax + 4]
setne byte [esp + 0x28]
jne 0x43aacd
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 2
mov dword [esp + 0x54], 0
jmp 0x43a588
mov edx, 1
mov ebx, 1
call fcn.00438710
mov dword [esp + 0x48], 1
mov dword [esp + 0x54], 0
mov dword [esp + 0x4c], eax
jmp 0x43a588
mov eax, dword [ebp + 0x160]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x78]
mov dword [esp + 0xc], 0
mov dword [esp + 4], eax
mov dword [esp], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], 0
call fcn.004388a0
jmp 0x43a6a1
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x34]
mov eax, dword [ecx + 8]
sub eax, dword [ecx + 4]
shr eax, 2
mov dword [esp + 8], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x78]
mov dword [esp], eax
mov eax, ebp
call fcn.00438820
jmp 0x43a81a
mov eax, dword [esp + 0x24]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.0043e560
mov ebx, eax
jmp 0x43a36d
test edi, edi
je 0x43ad87
test byte [edi + 6], 1
jne 0x43a381
mov esi, dword [esi + 8]
mov eax, 0
test esi, esi
cmove edi, eax
jmp 0x43a381
mov eax, dword [esp + 0x48]
sub ebx, dword [ecx + 8]
mov dword [esp + 8], edx
mov dword [esp + 0x64], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.0043ef60
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x64]
mov eax, dword [eax + 0x28]
mov eax, dword [eax + 8]
add ebx, eax
jmp 0x43a2dc
mov eax, dword [esi + 0xc]
cmp byte [eax], 0x5c
jne 0x43a377
add dword [esp + 0x3c], 1
xor edi, edi
jmp 0x43a381
xor edx, edx
call fcn.00438710
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x4c], eax
jmp 0x43a588
mov ebx, 0x1c
mov eax, 0xe4
jmp 0x439cfa
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], 0
jmp 0x43a588
mov edx, 2
call fcn.00438710
mov dword [esp + 0x48], 2
mov dword [esp + 0x54], 0
mov dword [esp + 0x4c], eax
jmp 0x43a588
mov ecx, dword [esp + 0x38]
mov edx, esi
sub edx, dword [ecx + 4]
sar edx, 4
jmp 0x43a8e8
cmp byte [ebp + 0x248], 0
jne 0x43ab52
mov eax, dword [esp + 0x20]
cmp byte [ebp + 0x28a], 0
mov dword [esp + 0x44], eax
je 0x43a691
mov eax, dword [esp + 0x34]
mov ecx, dword [esi + 8]
mov edx, dword [eax]
setg al
movzx eax, al
add eax, 0x15
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 8], str.invoking_macro__s_argument__d:_empty_macro_arguments_are_undefined_in_ISO_C90
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.0043c6d0
jmp 0x43a691
mov eax, dword [esp + 0x34]
mov edx, dword [esi + 8]
mov eax, dword [eax]
mov dword [esp + 0x10], edx
mov dword [esp + 8], str.invoking_macro__s_argument__d:_empty_macro_arguments_are_undefined_in_ISO_C98
mov dword [esp + 4], 0x15
mov dword [esp + 0xc], eax
mov dword [esp], ebp
call fcn.0043c6d0
mov eax, dword [esp + 0x20]
mov dword [esp + 0x44], eax
jmp 0x43a691
mov esi, dword [esp + 0x54]
mov edx, dword [esi + 0xc]
test edx, edx
jne 0x43a0cf
cmp byte [ebp + 0x269], 0
jne 0x43a0cf
imul eax, eax, 0x1c
mov esi, dword [esp + 0x54]
mov dword [esi + eax - 0x1c], 0
jmp 0x43a0cf
test dx, dx
jne 0x43a084
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + 0xc]
xor eax, eax
test ecx, ecx
setne al
mov dword [esp + 0x44], eax
jmp 0x43a084
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
jmp 0x43a45f
mov eax, dword [ebp + 0x4c]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x43ae6e
mov dword [esp + 4], 1
mov dword [esp], ebp
call fcn.00439600
mov eax, dword [esp + 0x34]
mov eax, dword [eax]
mov dword [esp + 8], 0x4cd2c0
mov dword [esp + 4], 3
mov dword [esp], ebp
mov dword [esp + 0xc], eax
call fcn.0043c650
mov eax, dword [esp + 0x58]
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.0043ed80
mov byte [ebp + 0x11], 0
sub dword [ebp + 0x10c], 1
sub byte [ebp + 0x10], 1
jmp 0x439b1f
mov edi, dword [ebp + 0xc]
mov eax, dword [esp + 0x24]
test edi, edi
movzx ebx, byte [eax + 0x26d]
je 0x43a42f
cmp byte [eax + 0x25a], 0
mov edi, eax
mov byte [eax + 0x25a], 0
mov dword [esp], 0x400
setne byte [esp + 0x30]
call fcn.004529f0
mov dword [ebp + 4], eax
cmp byte [edi + 0x26d], 0
je 0x43ac9b
mov dword [esp], 0x400
call fcn.004529f0
mov dword [ebp + 0x18], eax
test bl, bl
je 0x43aec5
mov eax, dword [ebp + 0x14]
mov edi, dword [ebp + 0xc]
mov edx, dword [ebp]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
lea ecx, [edi + 1]
mov dword [esp + 8], ecx
xor ecx, ecx
mov dword [esp + 4], edx
xor edx, edx
call fcn.00438820
mov eax, dword [ebp + 0x10]
mov ebx, 0x100
lea edx, [eax + 1]
cmp ebx, edx
jb 0x43ae7d
mov edi, dword [esp + 0x24]
lea edx, [esp + 0x7c]
mov eax, edi
call fcn.0043af10
cmp byte [eax + 4], 0x16
je 0x43ae52
xor ecx, ecx
mov edx, dword [ebp + 0x10]
cmp byte [edi + 0x26d], 0
mov dword [esp + 4], 2
setne cl
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp], edx
mov edx, eax
mov eax, ebp
call fcn.004386c0
mov eax, dword [ebp + 0x10]
add eax, 1
mov dword [ebp + 0x10], eax
jmp 0x43accf
mov ecx, dword [esp + 0x38]
test byte [ecx + 0x14], 2
je 0x43a8ae
movzx ecx, word [ecx + 0x10]
cmp dword [esi + 8], ecx
jne 0x43a8ae
test edi, edi
je 0x43ad61
mov ecx, dword [edi]
mov dword [esp + 0x48], 0
test ecx, ecx
jne 0x43a588
cmp dword [esp + 0x3c], eax
jae 0x43aab8
mov eax, dword [esp + 0x24]
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], 0
mov dword [eax + 8], edx
jmp 0x43a588
mov edi, dword [esi + 8]
jmp 0x43a381
movzx eax, byte [esi + 4]
mov dword [esp], eax
call fcn.004437f0
test al, al
jne 0x43a2af
mov dword [esp], esi
call fcn.0043e4c0
mov dword [esp + 0x44], 0
jmp 0x43a2c2
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x43ae22
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
cmp byte [eax + 4], 0x26
mov dword [esp + 0x2c], eax
je 0x43ae3d
add eax, 0x10
xor ebx, ebx
add ebx, 1
cmp ebx, ecx
je 0x43ae22
mov edx, eax
add eax, 0x10
cmp byte [edx + 4], 0x26
jne 0x43add5
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x2c], edx
jmp 0x43a1b0
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x43ae22
mov ebx, dword [esi + 4]
cmp byte [ebx + 4], 0x26
je 0x43ae30
lea edx, [ebx + 0x10]
xor esi, esi
jmp 0x43ae1b
movzx eax, byte [edx + 4]
add edx, 0x10
cmp al, 0x26
je 0x43ae27
add esi, 1
cmp esi, ecx
jne 0x43ae10
call fcn.00482220
mov dword [esp + 0x24], esi
jmp 0x439b5d
mov dword [esp + 0x24], 0
jmp 0x439b5d
mov dword [esp + 0x28], 0
mov dword [esp + 0x20], 0
jmp 0x43a45f
mov edi, dword [esp + 0x24]
mov dword [esp], edi
call fcn.00439470
movzx eax, byte [esp + 0x30]
mov byte [edi + 0x25a], al
jmp 0x43a42f
cmp byte [ebp + 8], 0
je 0x43ac03
jmp 0x43abf3
mov eax, dword [ebp + 4]
lea edi, [edx*8]
mov dword [esp + 4], edi
lea ebx, [edx + edx]
mov dword [esp], eax
call fcn.00452a70
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x26d], 0
je 0x43acda
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x43aefa
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.00452a70
mov dword [ebp + 0x18], eax
jmp 0x43acda
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp]
lea ebx, [eax + 1]
mov eax, dword [esp + 0x50]
call fcn.00438780
lea edx, [edi + ebx*4]
mov dword [eax + 0x18], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax + 8], edi
mov dword [eax + 0xc], edx
jmp 0x43acc7
mov dword [esp], edi
call fcn.004529f0
mov dword [ebp + 0x18], eax
jmp 0x43acda