Function at 0x403c50
Capabilities:
Check http status code
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x1244
call fcn.00412600
mov eax, dword [esp + 0x125c]
push ebx
push ebp
push esi
test eax, eax
push edi
mov dword [esp + 0x58], ecx
jle 0x404469
lea eax, [esp + 0x8c]
push eax
call fcn.00409c8c
mov ecx, 0x40
mov esi, 0x45e598
lea edi, [esp + 0x154]
or eax, 0xffffffff
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x2f
lea edi, [esp + 0x98]
rep stosd dword es:[edi], eax
mov ecx, 0x400
or eax, 0xffffffff
lea edi, [esp + 0x254]
push 0
rep stosd dword es:[edi], eax
call fcn.0041265e
push eax
call fcn.0041262f
add esp, 8
call fcn.0041263c
mov ebx, eax
and ebx, 0x800000ff
jns 0x403cda
dec ebx
or ebx, 0xffffff00
inc ebx
mov eax, dword [esp + 0x1260]
xor ecx, ecx
xor edx, edx
mov cl, byte [eax]
mov dl, byte [eax + 1]
mov edi, ecx
shl edi, 8
add edi, edx
and edi, reloc.WSOCK32.dll_accept
jns 0x403cfe
dec edi
or edi, 0xfffffffe
inc edi
mov cl, byte [0x45831d]
mov dl, byte [0x45831c]
setne al
add eax, 0x80
add cl, dl
mov dl, byte [0x45831e]
mov byte [esp + 0x254], al
mov al, byte [0x45831f]
mov byte [esp + 0x257], 2
xor cl, al
lea eax, [esp + 0x48]
xor cl, dl
xor edx, edx
mov dword [esp + 0x64], edx
push eax
mov byte [esp + 0x25c], cl
mov byte [esp + 0x25d], 0xc1
mov byte [esp + 0x25e], 0
mov byte [esp + 0x18], 0x65
mov byte [esp + 0x19], 0xc7
mov byte [esp + 0x1a], 0x33
mov byte [esp + 0x1b], 0x1e
mov byte [esp + 0x1c], 0x99
mov byte [esp + 0x1d], 0x87
mov byte [esp + 0x1e], 0xd3
mov byte [esp + 0x1f], 0xbc
mov byte [esp + 0x20], 0xda
mov byte [esp + 0x21], 0xe9
mov dword [esp + 0x6c], edx
call fcn.00409c8c
fld qword [eax]
sub esp, 0xc
fst qword [esp + 0x98]
mov ecx, dword [eax + 8]
mov eax, esp
mov dword [esp + 0xa0], ecx
fstp qword [eax]
mov edx, dword [esp + 0xa0]
mov dword [eax + 8], edx
call fcn.00406790
mov ebp, dword [esp + 0x1274]
mov esi, ebx
and esi, 1
add esp, 0xc
cmp esi, 1
jne 0x403e22
mov ecx, dword [ebp + 5]
mov edx, dword [ebp + 9]
mov dword [esp + 0x38], ecx
lea ecx, [ebp + 0xd]
mov dword [esp + 0x3c], edx
mov byte [esp + 0x26], al
mov dx, word [ecx]
mov word [esp + 0x20], dx
mov edx, eax
mov cl, byte [ecx + 2]
shr edx, 0x18
mov byte [esp + 0x22], cl
mov byte [esp + 0x23], dl
mov ecx, eax
mov edx, eax
mov al, byte [ebp + 0x10]
shr ecx, 0x10
shr edx, 8
mov byte [esp + 0x24], cl
mov cl, byte [ebp + 0x11]
mov byte [esp + 0x25], dl
mov dl, byte [ebp + 0x12]
mov byte [esp + 0x27], al
mov byte [esp + 0x28], cl
mov byte [esp + 0x29], dl
jmp 0x403e76
lea ecx, [ebp + 5]
mov byte [esp + 0x3c], al
mov edx, dword [ecx]
mov dword [esp + 0x20], edx
mov edx, dword [ecx + 4]
mov dword [esp + 0x24], edx
mov dl, byte [ebp + 0xf]
mov cx, word [ecx + 8]
mov byte [esp + 0x38], dl
mov word [esp + 0x28], cx
mov ecx, eax
shr ecx, 0x18
mov byte [esp + 0x39], cl
mov edx, eax
mov ecx, eax
mov al, byte [ebp + 0x11]
shr edx, 0x10
shr ecx, 8
mov byte [esp + 0x3a], dl
mov dl, byte [ebp + 0x10]
mov byte [esp + 0x3b], cl
mov cl, byte [ebp + 0x12]
mov byte [esp + 0x3d], dl
mov byte [esp + 0x3e], al
mov byte [esp + 0x3f], cl
xor eax, eax
mov cl, byte [esp + eax + 0x14]
xor cl, bl
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0xa
jl 0x403e78
xor eax, eax
mov dl, byte [esp + eax + 0x20]
mov cl, byte [esp + eax + 0x14]
xor dl, cl
mov byte [esp + eax + 0x48], dl
inc eax
cmp eax, 0xa
jl 0x403e8a
xor eax, eax
xor ecx, ecx
mov cl, byte [esp + eax + 0x48]
inc eax
cmp eax, 8
mov dl, byte [esp + ecx + 0x154]
mov byte [esp + eax + 0x7b], dl
jl 0x403ea0
mov eax, dword [esp + 0x58]
lea ecx, [esp + 0x7c]
push 0
push ecx
lea ebp, [eax + 0x8002c]
mov ecx, ebp
call fcn.00405510
lea edx, [esp + 0x64]
lea eax, [esp + 0x38]
push edx
push eax
mov ecx, ebp
call fcn.00405750
cmp esi, 1
mov byte [esp + 0x25b], 0x83
mov byte [esp + 0x25c], 0x13
mov byte [esp + 0x25d], bl
jne 0x403f37
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x25e], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x262], edx
mov dx, word [esp + 0x50]
mov dword [esp + 0x266], eax
mov dword [esp + 0x26a], ecx
mov word [esp + 0x26e], dx
jmp 0x403f70
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov dx, word [esp + 0x50]
mov dword [esp + 0x25e], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x262], ecx
mov ecx, dword [esp + 0x68]
mov word [esp + 0x266], dx
mov dword [esp + 0x268], eax
mov dword [esp + 0x26c], ecx
mov edx, dword [esp + 0x1268]
mov byte [esp + 0x270], 0x69
add edx, 0x14
mov byte [esp + 0x271], 0x10
mov eax, dword [edx]
mov dword [esp + 0x6c], eax
mov ecx, dword [edx + 4]
mov dword [esp + 0x70], ecx
mov eax, dword [edx + 8]
mov dword [esp + 0x74], eax
mov ecx, dword [edx + 0xc]
xor edx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], edx
mov word [esp + 0x34], dx
mov byte [esp + 0x36], dl
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], edx
mov dl, al
mov al, ah
xor dl, 0xa
xor al, 0x1e
mov byte [esp + 0x20], dl
mov byte [esp + 0x21], al
mov al, byte [esp + 0x76]
mov dl, byte [esp + 0x77]
xor al, 0x32
mov byte [esp + 0x22], al
mov al, cl
mov cl, ch
xor dl, 0x46
xor cl, 0x50
mov byte [esp + 0x23], dl
mov dl, byte [esp + 0x7b]
mov byte [esp + 0x25], cl
mov cl, byte [esp + 0x7a]
xor al, 0x3c
xor cl, 0x64
xor dl, 0x78
mov byte [esp + 0x26], cl
mov byte [esp + 0x24], al
mov byte [esp + 0x27], dl
xor ecx, ecx
xor edx, edx
mov dl, byte [esp + ecx + 0x25]
inc ecx
cmp ecx, 3
mov dl, byte [esp + edx + 0x154]
mov byte [esp + ecx + 0x33], dl
jl 0x40401d
mov cl, byte [esp + 0x36]
mov esi, dword [esp + 0x20]
mov byte [esp + 0x60], al
mov ax, word [esp + 0x34]
lea edx, [esp + 0x5c]
mov byte [esp + 0x63], cl
push 0
push edx
mov ecx, ebp
mov dword [esp + 0x64], esi
mov word [esp + 0x69], ax
call fcn.00405510
lea eax, [esp + 0x84]
lea ecx, [esp + 0x6c]
push eax
push ecx
mov ecx, ebp
call fcn.00405750
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], edx
mov dword [esp + 0x272], eax
mov dword [esp + 0x276], ecx
mov dword [esp + 0x27a], esi
mov dword [esp + 0x27e], edx
call fcn.0041263c
mov ebx, eax
and ebx, 0x800000ff
jns 0x4040c9
dec ebx
or ebx, 0xffffff00
inc ebx
call fcn.0041263c
and eax, 0x800000ff
jns 0x4040dc
dec eax
or eax, 0xffffff00
inc eax
mov byte [esp + 0x12], al
xor al, bl
mov byte [esp + 0x13], al
xor esi, esi
call fcn.0041263c
and eax, 0x800000ff
jns 0x4040fb
dec eax
or eax, 0xffffff00
inc eax
mov byte [esp + esi + 0x14], al
inc esi
cmp esi, 8
jl 0x4040e8
xor eax, eax
xor edx, edx
mov dl, byte [esp + eax + 0x14]
inc eax
cmp eax, 8
mov cl, byte [esp + edx + 0x154]
mov byte [esp + eax + 0x7b], cl
jl 0x404107
mov eax, dword [esp + 0x1260]
xor edx, edx
mov dword [esp + 0x2c], edx
test edi, edi
mov dword [esp + 0x30], edx
jne 0x40413f
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
mov dword [esp + 0x40], ecx
jmp 0x404149
mov ecx, dword [eax + 2]
mov edx, dword [eax + 6]
mov dword [esp + 0x40], ecx
lea eax, [esp + 0x7c]
push 0
push eax
mov ecx, ebp
mov dword [esp + 0x4c], edx
call fcn.00405510
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x40]
push ecx
push edx
mov ecx, ebp
call fcn.00405750
mov al, byte [esp + 0x13]
cmp al, 0x32
jbe 0x40418a
cmp al, 0xc8
jae 0x40418a
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
jmp 0x40419a
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
mov byte [esp + 0x284], bl
mov bl, byte [esp + 0x12]
mov byte [esp + 0x282], 0x67
mov byte [esp + 0x283], 0x12
mov byte [esp + 0x285], bl
mov dword [esp + 0x286], eax
mov dword [esp + 0x28a], ecx
mov dword [esp + 0x28e], esi
mov dword [esp + 0x292], edx
call fcn.0041263c
mov ebx, eax
and ebx, 0x800000ff
jns 0x4041ef
dec ebx
or ebx, 0xffffff00
inc ebx
call fcn.0041263c
and eax, 0x800000ff
jns 0x404202
dec eax
or eax, 0xffffff00
inc eax
mov byte [esp + 0x12], al
xor al, bl
mov byte [esp + 0x13], al
xor esi, esi
call fcn.0041263c
and eax, 0x800000ff
jns 0x404221
dec eax
or eax, 0xffffff00
inc eax
mov byte [esp + esi + 0x14], al
inc esi
cmp esi, 8
jl 0x40420e
xor eax, eax
xor ecx, ecx
mov cl, byte [esp + eax + 0x14]
inc eax
cmp eax, 8
mov dl, byte [esp + ecx + 0x154]
mov byte [esp + eax + 0x7b], dl
jl 0x40422d
mov eax, dword [esp + 0x1260]
test edi, edi
jne 0x40425b
mov ecx, dword [eax + 2]
mov edx, dword [eax + 6]
mov dword [esp + 0x40], ecx
jmp 0x404265
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
mov dword [esp + 0x40], ecx
lea eax, [esp + 0x7c]
push 0
push eax
mov ecx, ebp
mov dword [esp + 0x4c], edx
call fcn.00405510
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x40]
push ecx
push edx
mov ecx, ebp
call fcn.00405750
mov al, byte [esp + 0x13]
cmp al, 0x64
jae 0x4042a2
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
jmp 0x4042f2
cmp al, 0xb4
jae 0x4042b8
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
jmp 0x4042f2
mov ax, word [esp + 0x14]
mov cl, byte [esp + 0x16]
mov edx, dword [esp + 0x30]
mov word [esp + 0x48], ax
mov eax, dword [esp + 0x17]
mov byte [esp + 0x4a], cl
mov cl, byte [esp + 0x1b]
mov dword [esp + 0x4b], edx
mov edi, dword [esp + 0x48]
mov dword [esp + 0x4f], eax
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x4c]
mov byte [esp + 0x53], cl
mov ecx, dword [esp + 0x50]
mov dl, byte [esp + 0x12]
mov dword [esp + 0x2a6], eax
lea eax, [esp + 0x254]
push 0x56
push eax
push 0xffffffffffffffff
mov byte [esp + 0x2a2], 0x68
mov byte [esp + 0x2a3], 0x12
mov byte [esp + 0x2a4], bl
mov byte [esp + 0x2a5], dl
mov dword [esp + 0x2a6], edi
mov dword [esp + 0x2aa], esi
mov dword [esp + 0x2ae], ecx
mov byte [esp + 0x261], 0xf0
mov byte [esp + 0x262], 0x57
call fcn.00406850
mov ecx, eax
mov edx, eax
shr ecx, 0x18
mov byte [esp + 0x2b6], cl
mov ecx, eax
mov byte [esp + 0x2b9], al
mov eax, dword [0x4582f8]
add esp, 0xc
shr edx, 0x10
shr ecx, 8
test eax, eax
mov byte [esp + 0x2ab], dl
mov byte [esp + 0x2ac], cl
je 0x40442c
mov ebx, dword [esp + 0x58]
mov ecx, 0x16
lea esi, [esp + 0x254]
lea edi, [esp + 0x9d]
mov dl, byte [ebx + 0x18]
mov byte [esp + 0x98], 0x47
mov byte [esp + 0x99], 0x40
mov byte [esp + 0x9a], 0
mov byte [esp + 0x9b], dl
mov byte [esp + 0x9c], 0
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x1258]
mov ecx, dword [esp + 0x125c]
movsw word es:[edi], word [esi]
mov byte [eax + ecx], 0
mov byte [eax + ecx + 1], 0xbc
lea edi, [eax + ecx + 2]
mov ecx, 0x2f
lea esi, [esp + 0x98]
mov byte [eax + 3], 0
mov byte [eax + 4], 0xd2
push eax
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
call fcn.00403390
mov ecx, dword [ebx + 0x18]
inc ecx
mov eax, ecx
mov dword [ebx + 0x18], ecx
cmp eax, 0x20
jl 0x404469
mov dword [ebx + 0x18], 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1244
ret 0x18
mov eax, dword [esp + 0x1258]
mov ecx, dword [esp + 0x125c]
lea esi, [esp + 0x254]
push eax
mov byte [eax + ecx], 0
mov byte [eax + ecx + 1], 0x5a
lea edi, [eax + ecx + 2]
mov ecx, 0x16
mov byte [eax + 3], 0
mov byte [eax + 4], 0x70
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x5c]
movsw word es:[edi], word [esi]
call fcn.00403390
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1244
ret 0x18